Delegate - BeginInvoke - EndInvoke - Clean Up Multiple Async Threat Calls To The Same Delegate?
Feb 9, 2010I've created a Delegate that I intend to call Async.
[Code]...
I've created a Delegate that I intend to call Async.
[Code]...
My app is basically talking to a device via RS232. I need to 'listen' to the data received and do certain things based on it, update labels, etc. When I started, I only had a couple cross-thread calls and I used JMC's example to get by that. Now my app is bigger and I am calling the ThreadProcSafe all the time. I am hoping there is an easier way so I don't have to create sub routines for every control. Here's the relevant parts of my code.
Private Sub StepperSerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles StepperSerialPort.DataReceived
Dim ReceiveBuffer As String
[Code].....
I have a (legacy) form where I had to add the InvokeRequired/BeginInvoke(Delegate) to avoid the "Control control name accessed from a thread other than the thread it was created on." exception.This seems to work fine but there are some scenarios where the BeginInvoke is not calling the Delegate (which I can tell from the output log). [code]
View 1 RepliesDisclaimer: I know that Thread.Abort is evil. I'm using it as a last resort since some I/O functions (e.g., File.Exists when used on a non-existing network share) block for a large amout of time and do not allow you to specify a timeout.
Question: Is it possible to Abort (as in Thread.Abort) a worker thread started using Delegate.BeginInvoke or do I have to do the Thread handling myself?
from the documentation we have this: Multicast Delegate: Represents a multicast delegate; that is, a delegate that can have more than one element in its invocation list.
so am i right to say that Multicast delegate is no different from a normal delegate other than the fact that it has arguments. so System.Action is a 'normal' delegate whereas System.Action(T)(Byval obj as T) is a multicast delegate?
I'm working with the DevExpress XtraGrid control.I have a routine that goes thru and adds all the controls on the current form dynamically, and launches on a seperate thread the routine for a given control to initialize it to the value that will be displayed to the end-user. Some of the controls are displaying calculated values, and take some time to return their values, so that's why we are doing it on a seperate thread.
[Code]...
I'm using a similar snippet of code for any control properties that have to be updated, and all work fine. On the above code when the actual Invoke is called, it APPEARS that the thread just ends and never calls the delegate, and doesn't return to finish either.
Code:
Public Class SendPings
Shared Sub New()
AddHandler Post.Saved, AddressOf Post_Saved[code].....
I get a error" Method 'Private Shared Sub Ping(item As BlogEngine.Core.IPublishable, itemUrl As System.Uri)' does not have a signature compatible with delegate 'Delegate Sub WaitCallback(state As Object)'.
I am trying to call a method that started on a background thread on the UI thread calling BeginInvoke and passing in a delegate as follows:
Dispatcher.BeginInvoke(Function() UpdateApplicationDataUI())
to call this method:
Private Sub UpdateApplicationDataUI()
...
End Sub
However, I get an error in the call to BeginInvoke (the UpdateApplicationDataUI portion of the delegate is stating "Expression does not produce a value").
Me.Dispatcher.BeginInvoke(Function() New Action(AddressOf UpdateApplicationDataUI))
I am trying to write a VB.NET alternative to a C# anonymous function.I wish to call Threading.SynchronizationContext.Current.Send which expects a delegate of type Threading.SendOrPostCallback to be passed to it. The background is here, but because I wish to both pass in a string to MessageBox.Show and also capture the DialogResult I need to define another delegate within. I am struggling with the VB.NET syntax, both from the traditional delegate style, and lambda functions.My go at the traditional syntax is below, but I have gut feeling it should be much simpler than this:
Private Sub CollectMesssageBoxResultFromUserAsDelegate(ByVal messageToShow As String, ByRef wasCanceled As Boolean)
wasCanceled = False
[code].....
Is it possible to pass multiple arguments to a delegate method from a list(Of T).ForEach call?So, I'd like to pass a listbox object to the delegate routine below:
Sub test()
Dim names As New List(Of String)
names.Add("Bruce")
names.Add("Alfred")
[code]....
I am trying to run this
vb
Public Sub SendPing(ByVal strHostname As String, ByVal objSelectedNode As TreeNode)
Try
Dim objPing As New Ping
[code]....
My problem is that in this code (and I know it's a lame way to do it) I'm checking to see if the node is Green after the Ping has been completed to determine if the ping was successful. I would prefer to return a boolean value to be True if the ping was successful.
When it executes the SendPing on the DragDrop function, it starts that thread and executes the If statement to determine if the node is green, but the ping isnt complete. Now I have to do this function on many nodes at once, so I dont want this to be a single thread. Is it possible to return a value from an async call and then execute a function after that value has been returned, or will this have to be a single thread?
Using the code example on the Twitterizer website I am trying to post a tweet to twitter with this code:
Dim asyncResult As IAsyncResult = TwitterStatusAsync.Update(
tokens.Tokens,
Tweet.Text,
[Code]....
While reading this threadthe code sample there came from MSDN, which was used to demonstrate the use of a delegate. I know what Delegates are. And I know how they work when it comes to things like crossing threads and even sinks.... how ever, the sample given is a simplecontrived example, and I'm wondering why/when would I use a delegate in this situation? Or in any situation? In my head, it seems it would have been easier/cleaner to call the function pointed to directly...
View 18 RepliesI heard once that .net introduced an already defined delegate with no parameter that we could use instead of creating one.
View 1 RepliesI came across a snippet of C# code which is very useful. I am trying to convert it to VB.NET, but can't seem to.
timer.Tick += delegate { panel.Children.Add(source); timer.Stop(); };
Is it possible to translate this to something similar in VB?
I have below code in C#:
[Code]...
I'm having trouble converting a C# delegate to VB.NET.
How can this be done?
public MainForm()
{
InitializeComponent();
_twain = new Twain(new WinFormsWindowMessageHook(this));
_twain.TransferImage += delegate(Object sender, TransferImageEventArgs args)
[Code]...
how can I convert the following code from C# to VB without exposing "variable" as global variable.
[Code]...
I'm in the process of converting some existing code to VB. However, I'm running into a bit of a snag. It seems that in C#, a delegate can have a return value, but not so in VB. So my question is, how would I convert the following VB code to handle this?.[code]
View 3 Repliesim developing a way of calculationg differentil equations in VB 2008 using the 4th order ruge-kutta method. I pursched a book by Jack Xu called "Practical WPF Graphics programming".
[Code]...
how this is written in VB.NET? This was an example I found on [URL]
ThreadPool.QueueUserWorkItem(delegate
{
var channelFactory = new ChannelFactory<ISimpleService>("*");
var simpleService = channelFactory.CreateChannel();
var asyncResult = simpleService.BeginGetGreeting("Daniel", null, null);
[code]....
I am using this delegate to invoke my methode:
[Code]...
for few solutions it work outs well but not for the following code. I find an error when executing the following code. I find an error :
ErrorMethod 'Public Sub test()' does not have the same signature as delegate 'Delegate Sub DataRowChangeEventHandler(sender As Object, e As System.Data.DataRowChangeEventArgs)'.C:UsersKashifDocumentsVisual Studio
[code].....
I have a problem in translating a piece of C# code
(
http://www.codeproject.com/KB/WPF/VMCommanding.aspx)static bool ConfigureDelayedProcessing(DependencyObject depObj, ICommandSink sink) { bool isDelayed = false;
[code]....
I am trying to create a delegate(as a test) for: Public Overridable ReadOnly Property PropertyName()As String My intuitive attempt was declaring the delegate like this:
[code]...
So the question is, how do I make a delegate for a property?
This is a theoretical question, I've already got a solution to my problem that took me down a different path, but I think the question is still potentially interesting.Can I pass object properties as delegates in the same way I can with methods? For instance:
Let's say I've got a data reader loaded up with data, and each field's value needs to be passed into properties of differing types having been checked for DBNull. If attempting to get a single field, I might write something like:
if(!rdr["field1"].Equals(DBNull.Value)) myClass.Property1 = rdr["field1"];
But if I've got say 100 fields, that becomes unwieldy very quickly. There's a couple of ways that a call to do this might look nice:
myClass.Property = GetDefaultOrValue<string>(rdr["field1"]); //Which incidentally is the route I took
Which might also look nice as an extension method:
myClass.Property = rdr["field1"].GetDefaultOrValue<string>();
Or:
SetPropertyFromDbValue<string>(myClass.Property1, rdr["field1"]); //Which is the one that I'm interested in on this theoretical level
In the second instance, the property would need to be passed as a delegate in order to set it.
Try5Times will try a function for 5 times.that function can have any number of argument and return a boolean.
If the function return false, try again.
If the function return true, stop.
How to make such function and delegate? Is there a general delegate?
Here there's an old question about this code.
xmpp.OnLogin += delegate(object o)
{
xmpp.Send(
[code]....
I'm trying to convert the c # code of a sample code to vb.net but I could with the following line of code. it is an event, delegate. but I can not build a functional structure.
[Code]....
I have a code from Fleck that actually works fine in the C# (no errors)and this is a line in a class library:[code]can someone tell me what is the valid vb .net code for that?
View 1 Replies