VB.NET 中 C# BeginInvoke((Action)) 的等价物
Equivalent of C# BeginInvoke((Action)) in VB.NET
我需要将以下 C# 代码转换为 VB.NET:
if (this.InvokeRequired)
{
this.BeginInvoke((Action)(() =>
{
imageMutex.WaitOne();
pbCamera.Image = (Bitmap)imageCamera.Clone();
imageMutex.ReleaseMutex();
}));
}
我试过这样的:
If Me.InvokeRequired Then
Me.BeginInvoke((Action)(Function()
imageMutex.WaitOne()
pbCamera.Image = CType(imageCamera.Clone(), Bitmap)
imageMutex.ReleaseMutex()
))
End If
但是编译器告诉我Action
是一个类型,不能用作表达式。
VB.NET?
这样的delegate怎么写
直译为:
If Me.InvokeRequired Then
Me.BeginInvoke(DirectCast(
Sub()
imageMutex.WaitOne()
pbCamera.Image = DirectCast(imageCamera.Clone(), Bitmap)
imageMutex.ReleaseMutex()
End Sub,
Action)
)
End If
正如其他人所指出的,您不需要将 lambda 转换为 Action:
If Me.InvokeRequired Then
Me.BeginInvoke(
Sub()
imageMutex.WaitOne()
pbCamera.Image = DirectCast(imageCamera.Clone(), Bitmap)
imageMutex.ReleaseMutex()
End Sub
)
End If
https://codeconverter.icsharpcode.net 很好地转换了它。如果您在 C# 中找到所需的代码但在转换的几个方面遇到困难,则可能需要考虑一下
我需要将以下 C# 代码转换为 VB.NET:
if (this.InvokeRequired)
{
this.BeginInvoke((Action)(() =>
{
imageMutex.WaitOne();
pbCamera.Image = (Bitmap)imageCamera.Clone();
imageMutex.ReleaseMutex();
}));
}
我试过这样的:
If Me.InvokeRequired Then
Me.BeginInvoke((Action)(Function()
imageMutex.WaitOne()
pbCamera.Image = CType(imageCamera.Clone(), Bitmap)
imageMutex.ReleaseMutex()
))
End If
但是编译器告诉我Action
是一个类型,不能用作表达式。
VB.NET?
直译为:
If Me.InvokeRequired Then
Me.BeginInvoke(DirectCast(
Sub()
imageMutex.WaitOne()
pbCamera.Image = DirectCast(imageCamera.Clone(), Bitmap)
imageMutex.ReleaseMutex()
End Sub,
Action)
)
End If
正如其他人所指出的,您不需要将 lambda 转换为 Action:
If Me.InvokeRequired Then
Me.BeginInvoke(
Sub()
imageMutex.WaitOne()
pbCamera.Image = DirectCast(imageCamera.Clone(), Bitmap)
imageMutex.ReleaseMutex()
End Sub
)
End If
https://codeconverter.icsharpcode.net 很好地转换了它。如果您在 C# 中找到所需的代码但在转换的几个方面遇到困难,则可能需要考虑一下