如何使用Invoke Required并在控制台应用程序中调用?

时间:2014-11-01 13:25:29

标签: c# winforms console-application

我正在尝试将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);
            }

        }

1 个答案:

答案 0 :(得分:5)

你没有。

Invoke - 跨线程机制构建于Windows消息循环之上。

如果你真的需要跨线程调用,你可以做的是创建一个隐藏窗口并启动一个消息循环(使用UI并且控制台不是互斥的),做你的工作,在控制台上显示结果,以及在需要时使用Invoke在主线程上执行操作。

但是如果你没有任何用户界面,那么需要在主线程上执行操作的主要原因就不复存在了。你已经跳到了#34;等同于InvokeRequired?"没有首先找到TextBox的等价物。