我正在尝试将winform应用程序转换为控制台应用程序。 Winform applicatin有一个委托处理程序。如何在控制台应用程序中编写相同的功能?是什么替代.InvokeRequired和this.Invoke
public delegate void DelegateMessage(string Reply);
_pipeServer.PipeMessage += new DelegateMessage(PipesMessageHandler);
private void PipesMessageHandler(string message)
{
try
{
if (this.InvokeRequired)
{
this.Invoke(new NewMessageDelegate(PipesMessageHandler), message);
}
else
{
txtMessage.Text = message;
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
答案 0 :(得分:5)
你没有。
Invoke
- 跨线程机制构建于Windows消息循环之上。
如果你真的需要跨线程调用,你可以做的是创建一个隐藏窗口并启动一个消息循环(使用UI并且控制台不是互斥的),做你的工作,在控制台上显示结果,以及在需要时使用Invoke在主线程上执行操作。
但是如果你没有任何用户界面,那么需要在主线程上执行操作的主要原因就不复存在了。你已经跳到了#34;等同于InvokeRequired
?"没有首先找到TextBox的等价物。