如何在WinForms中正确制作线程化GUI应用程序?

| 我来自C背景,目前我想制作一个小型的WinForms实用程序,该实用程序具有响应性GUI和长时间运行的工作线程。 GUI是由Form1派生的常规内容,带有进度指示器和内容,工作线程为
new System.Threading.Thread();
。 在C ++中,一切都很简单,在.NET中,我不知道要做什么。 是否有PostMessage类型的数据更新方式?我是否在读取共享锁保护结构的主线程上启动Timer,是否还有另一种方法?在代表身上看到了多个文档,但是在10篇不同的文章之后,它们似乎不起作用,可能是因为我有一个Worker <-> GUI关系,而不是GUI <-> GUI关系。 所有GUI物料都在GUI类中,所有worker物料都在其自己的worker类中。管理世界中的最佳做法是什么?     
已邀请:
有很多方法,但是简单地说, 启动线程 使用InvokeRequired和Invoke()返回GUI线程 此外,BackgroundWorker还提供了一种更简单的方法。     
这是WinForms应用程序中的程序类
 static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
这里只有一个线程
[STAThread]
您可以使用ѭ3代替它,以便可以处理多个线程 或者可以使用ѭ4a在运行时创建线程     
使用BackgroundWorker 使用Control.Invoke 使用SynchonizationContext 使用任务并行库(
System.Threading.Tasks
) 使用接收 请勿使用Thread.Start或ThreadPool     

要回复问题请先登录注册