if (InvokeRequired)
{
BeginInvoke(new MethodInvoker(delegate()
{
textBox1.Text = args.Fax.Port.ToString();
textBox2.Text = args.Fax.FaxStatus.ToString();
}));
}
Respuesta
De MSDN
Delegate Sub MyDelegate(myControl As Label, myArg2 As String)
Private Sub Button_Click(sender As Object, e As EventArgs)
Dim myArray(1) As Object
myArray(0) = New Label()
myArray(1) = "Enter a Value"
myTextBox.BeginInvoke(New MyDelegate(AddressOf DelegateMethod), myArray)
End Sub
Public Sub DelegateMethod(myControl As Label, myCaption As String)
myControl.Location = New Point(16, 16)
myControl.Size = New Size(80, 25)
myControl.Text = myCaption
Me.Controls.Add(myControl)
End Sub
Así
if (InvokeRequired)
{
BeginInvoke(new MethodInvoker(delegate()
{
textBox1.Text = args.Fax.Port.ToString();
textBox2.Text = args.Fax.FaxStatus.ToString();
}));
}
Delegate Sub MyDelegate(faxPort As String, faxStatus As String)
If InvokeRequired Then
Dim aArray(1) as Object
aArray(0) = args.Fax.Port.ToString()
aArray(1) = args.Fax.FaxStatus.ToString();
BeginInvoke(New MyDelegate(AddressOf MySub), aArray)
End If
Sub MySub(faxPort as String, faxStatus as String)
textBox1.Text = faxPort
textBox2.Text = faxStatus
End Sub
creo
Cortesía de developerfusion.com:
If InvokeRequired Then
BeginInvoke(New MethodInvoker(Function() Do
textBox1.Text = args.Fax.Port.ToString()
textBox2.Text = args.Fax.FaxStatus.ToString()
End Function))
End If
Sí, lo intenté también. No funcionó No compilará – beaudetious
@beaudetious: ¡puede haber algún problema con otras partes de tu código! –
Esta sintaxis es nueva en VB 10, pero es un poco incorrecta. – SLaks
Hasta Visual Studio 2010, VB.Net no soporta múltiples instrucciones funciones anónimas.
Necesita mover el método anónimo a un método diferente que toma args
como parámetro, luego llame al Invoke
en él.
¿De verdad? Gracias por la info. No estaba al tanto de esa limitación de una línea con VB.NET <10 – jcolebrand
Una muestra de código me ayudaría aquí. Gracias. – beaudetious
VB.NET 9 y anterior no es compatible con las funciones anónimas de varias líneas. Usted tiene que escribir una función separada:
If InvokeRequired Then
BeginInvoke(New MethodInvoker(AddressOf MySub))
End If
donde MySub:
Sub MySub()
textBox1.Text = args.Fax.Port.ToString()
textBox2.Text = args.Fax.FaxStatus.ToString()
End Sub
ACTUALIZACIÓN:
Para aclarar acerca del parámetro args
hay una sobrecarga de BeginInvoke que podría ser utilizado y en este caso, el delegado MethodInvoker ya no es adecuado. Action(Of T) funcionaría:
If InvokeRequired Then
BeginInvoke(New Action(Of SomeType)(AddressOf MySub), args)
End If
y:
Sub MySub(ByVal args as SomeType)
textBox1.Text = args.Fax.Port.ToString()
textBox2.Text = args.Fax.FaxStatus.ToString()
End Sub
Después de todo es cosas sencillas como esta que hacen desarrolladores de C# feliz :-) (por favor, no lo toman mal, no tengo nada en contra de VB. NET)
'args' es probablemente un parámetro del método original. – SLaks
Una gran sugerencia, pero ¿cómo paso los argumentos a MySub desde MethodInvoker? – beaudetious
@beaudetious, por favor mira mi actualización. –
Dado que las observaciones no permiten el formato, voy a publicar mi solución de trabajo aquí. Gracias a todos los que intervinieron: Darin, SLaks, drachenstern, Jay.
Private Sub myControl_FaxStatus(ByVal sender As Object, ByVal args As DataTech.FaxManNet.FaxEventArgs)
frmModemStatus.UpdateStatus(args.Fax)
If InvokeRequired Then
Dim aArray(1) As Object
aArray(0) = args.Fax.Port.ToString()
aArray(1) = args.Fax.FaxStatus.ToString()
BeginInvoke(New MyDelegate(AddressOf UpdateStatusDisplay), aArray)
End If
Try
TextBox1.Text = args.Fax.Port.ToString()
TextBox2.Text = args.Fax.FaxStatus.ToString()
Catch ex As Exception
System.Diagnostics.Debug.WriteLine("ex = " & ex.ToString())
End Try
End Sub
Delegate Sub MyDelegate(ByVal faxPort As String, ByVal faxStatus As String)
Private Sub UpdateStatusDisplay(ByVal faxPort As String, ByVal faxStatus As String)
TextBox1.Text = faxPort
TextBox2.Text = faxStatus
End Sub
Si necesita cosas similares en la característica solo instale el siguiente componente en su estudio visual. Después de eso puede convertir fácilmente de C# a vb.net o vb.net a C#. El soporte VS2010 ya está incluido. http://codeconvert.codeplex.com/
- 1. ¿Este código es un exploit? ¿Qué es este código?
- 2. ¿Cuál es el equivalente de VB.NET a este código C#?
- 3. ¿Por qué este código devuelve valores diferentes? (C# y VB.NET)
- 4. ¿Qué es este código en Javascript?
- 5. ¿Qué es inseguro en este código?
- 6. ¿Este código es insano?
- 7. ¿Cuál es la versión C# del InputDialog de VB.net?
- 8. ¿Qué hace este código
- 9. ¿Qué hace este código?
- 10. ¿Cuál es la explicación de este código java?
- 11. ¿Es este código redundante?
- 12. ¿De qué sirve este código?
- 13. ¿Por qué no es este grupo LINQ al agregar las filas en vb.net?
- 14. ¿Este código es demasiado frágil?
- 15. Javascript: ¿Qué hace este código?
- 16. ¿Qué es vulnerable acerca de este código C?
- 17. ¿Cuál es el equivalente VB.NET de este código C# para cablear y declarar un evento?
- 18. ¿Por qué este código de ensamblaje es más rápido?
- 19. ¿Para qué sirve este código?
- 20. ¿Qué está haciendo este código? :() {: |: &} ;:
- 21. ¿Qué significa este código C++?
- 22. ¿Por qué este código de Scala es lento?
- 23. ¿Qué forma de escribir este código es más eficiente?
- 24. ¿Qué es este lenguaje?
- 25. ¿Qué hace este código xkcd?
- 26. ¿Este código es realmente multiproceso?
- 27. ¿Es este código válido de C++?
- 28. ¿Es este código válido C++?
- 29. ¿Por qué este código funciona para este problema de TopCoder?
- 30. El código fuente es diferente de la versión original
En el futuro, ayuda a tener en cuenta cuál es el mensaje de error se recibió desde el compilador;) – jcolebrand
Sólo pega el código VB.Net convertida (de developerfusion.com) en mi aplicación ... termino con 14 errores del sabor: Declaración esperada./Satement no puede aparecer fuera de un método./'End Try' debe ir precedido de una coincidencia 'Try'/'End Sub' debe ir precedida por un 'Sub'/ 'If' debe coincidir con un 'End If'/Expression expected/'End Sub' correspondiente esperado/Fin del resumen esperado – beaudetious
Jon, gracias por la edición de la etiqueta. Tantas opciones ... – beaudetious