如何创建前台任务?

Nah*_*hum 6 c# multithreading task

我似乎无法创建前台任务.我的主线程是支持调用另一个线程然后退出.另一个线程假设永远运行

void MainThreadMain()
{
    task_main = Task.Factory.StartNew(() => OtherThread()) ;
    return;
}

void OtherThread()
{
  while(true)
  {
     TellChuckNorrisJoke();
  }
}
Run Code Online (Sandbox Code Playgroud)

即使主线程已经死了,我怎样才能确保task_main继续运行?我假设我这样做:

task_main.IsBackgorund = false; 
Run Code Online (Sandbox Code Playgroud)

但是没有这样的选择:\我可以让我的主线程等待来自我的其他线程的信号,它传递给Foreground模式.但那简直太傻了.

Nic*_*ler 6

显而易见的问题是:你为什么不在主线程上运行你的工作?

假设这不是一个选项,你应该使用a Thread而不是a Task.然后你可以设置:

Thread.IsBackground = false;
Run Code Online (Sandbox Code Playgroud)

这将阻止您的应用程序在工作线程运行时终止.

  • 啊! Windows服务由[服务控制管理器]控制(http://msdn.microsoft.com/en-us/library/windows/desktop/ms685150(v = vs.85).aspx).因此,它没有正常的"主线程".SCM调用`OnStart`,你是正确的,因为它必须快速返回.所以是的,启动一个`Thread`(不是`Task`)是有道理的.您还必须实现`OnPause`和`OnStop`.请参阅[MSDN:Windows服务应用程序](http://msdn.microsoft.com/en-us/library/y817hyb6.aspx). (2认同)