让我描绘一下我的情况:
我有一个创建线程的 WCF 服务器。该线程执行一个程序集,让我们调用它ABC.exe
。这ABC.exe
是这样做的:
static void Main(string[] args)
{
objClientBase.OnHandshakeCompleted += new EventHandler(objClientBase_OnHandshakeCompleted);
objClientBase.OnShutdownInitiated += new EventHandler(objClientBase_OnShutdownInitiated);
objClientBase.Connect();
objOEEMon = new Main();
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
}
在哪里Connect
:
objClientThread = new Thread(start) { IsBackground = true };
objClientThread.Start();
和start
/// <summary>
/// Starts the client program.
/// </summary>
private void start()
{
//We Open the proxy to let connections happen
objProxy.Open();
if (performHandshake())
{
IsConnected = true;
DelayedShutdownBool = false;
//While connected, the thread keeps the client alive
while (IsConnected)
{
System.Threading.Thread.Sleep(500);
if (DelayedShutdownBool)
{
System.Threading.Thread.Sleep(500);
objProxy.Close();
objConfiguration = null;
IsConnected = false;
}
}
}
}
这ABC.exe
是使用 WCF 连接到服务器的客户端。
因此,与其让Sleep(Infinite)
我想使用manualResetEvent
s (或其他东西),不如让 s得到关于创建和结束执行Main()
的线程结束的通知。Connect
但我不知道如何Main
得到通知,因为正在调用创建线程的实例的函数。
我不想要的是主动等待while(condition) sleep