【发布时间】:2011-04-28 20:57:15
【问题描述】:
我有一个执行相当长的运行任务的 Windows 服务。目前,我生成了一个新线程,该线程执行一个方法,该方法关闭并调用此 Windows 服务。此代码如下所示:
Thread thread = new Thread(new ThreadStart(ExecyuteLongRunningMethod));
thread.Start();
thread.Join();
在调用堆栈的较高位置(当此代码完成时),会弹出一个消息框,说明操作的结果。
但是,当这段代码执行时(ExecuteLongRunningMethod 调用 windows svc),会弹出一个消息框,说明该操作没有发生任何变化,但因为这是在上面的代码块完成之前,所以出现错误消息框。
因此,问题是,只有在 Windows 服务完成时才继续在 winforms 应用程序中执行(这就是所谓的 windows svc)的正确方法是什么?我认为上面的方法是不正确的,因为线程将调用 Windows 服务(另一个进程),所以当 Windows 服务完成它的工作时,我的代码(winforms 应用程序)将继续。要么需要某种信号,要么需要命名管道之类的东西?
该应用在 .NET 3.5 中。
谢谢
【问题讨论】:
标签: c# multithreading windows-services named-pipes