如何使用“必需调用”和“在控制台应用程序中调用”

本文关键字:调用 应用程序 控制台 必需调用 何使用 | 更新日期: 2023-09-27 18:28:38

我正在尝试将Winform应用程序转换为控制台应用程序。 Winform应用程序有一个delegate handler。如何在console应用程序中编写相同的功能?this.InvokeRequiredthis.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 );
    }
}

如何使用“必需调用”和“在控制台应用程序中调用”

你没有。

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

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

但是,如果您没有任何 UI,则需要在主线程上执行操作的主要原因也消失了。 您跳到"InvokeRequired的等价物是什么?",而没有首先找到文本框的等效项。