【问题标题】:C# - Terminating Application.Run()C# - 终止 Application.Run()
【发布时间】:2011-09-10 16:14:15
【问题描述】:

有没有办法干净地终止从另一个线程调用System.Windows.Forms.Application.Run() 发出的消息循环?

Thread messageLoop = new Thread(() => Application.Run());
messageLoop.SetApartmentState(ApartmentState.STA);
messageLoop.Start();
//How to terminate thread like on Application.ExitThread() without calling Thread.Abort()?

提前致谢!

【问题讨论】:

    标签: c# .net winforms multithreading


    【解决方案1】:

    使用 ApplicationContext 类来保持对线程的引用。像这样:

        ApplicationContext threadContext;
    
        private void startLoop() {
            threadContext = new ApplicationContext();
            var messageLoop = new Thread(() => Application.Run(threadContext));
            messageLoop.Start();
        }
    
        private void stopLoop() {
            threadContext.ExitThread();
            threadContext = null;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2015-11-22
      • 2011-01-15
      • 2014-03-16
      • 1970-01-01
      相关资源
      最近更新 更多