在控制台应用程序调用代理(Invoking Delegate in a Console Applic

2019-09-28 19:25发布

我需要一个WinForm应用程序迁移到一个控制台应用程序。

在WinForm应用程序,我有这样的:

this.Invoke(new LogResponseCallback(this.LogResponse), new object[] { allAlarmsJson });


   private delegate void LogResponseCallback(string text);
    private void LogResponse(string response)
    {
        this._richTextResponse.Text = response + "\r\n";
    }

似乎是一个特定操作的处理后,主线程被调用。

我关心的是如何能同异步委托调用可以在控制台应用程序来实现。

任何帮助将高度赞赏。

提前致谢

Answer 1:

这里有一个问题,我问了一下调用如何做它做什么,

好奇Control.Invoke的执行()



Answer 2:

通常,在Windows窗体你会使用Control.Invoke从后台线程回到UI线程,因为你不能在非UI线程中访问UI控件。

同样的限制不会在控制台应用程序中应用-你可能仍然需要小心,以避免线程问题,但他们不可能是相同的问题。 如果你正在做的是登录到控制台(例如用Console.WriteLine )你应该罚款只是做记录在后台线程。



Answer 3:

首先你是不是在你的代码中使用任何asynchonous代表在这里重要的是, this.Invoke是同步调用。
其次,如果你正在运行控制台应用程序不必当元帅的呼叫切换到主线程,你只应该这样做,当你执行代码,依靠线程,如的WinForms,WPF UI线程和一些COM组件,您只有在这种情况下编组呼叫,因为这些组件都是靠创建它们的线程上



文章来源: Invoking Delegate in a Console Application