2009-11-09 57 views
0

我必須將一個項目移植到緊湊框架。而不能轉化爲用於Compact Framework的ThreadPool.RegisterWaitForSingleObject?

ThreadPool.RegisterWaitForSingleObject (WaitHandle中,WaitOrTimerCallback, 對象,INT,BOOL)

什麼可能是在C#中ThreadPool.RegisterWaitForSingleObject一個替代方式

lock (this.RegLock) 
{ 
    if (!this.WaitFlag) 
    { 
     this.mre.Reset(); 
     if (this.handle != null) 
     { 
      this.handle.Unregister(null); 
     } 
     this.handle = ThreadPool.RegisterWaitForSingleObject(this.mre, this.WOTcb, null, this.Interval, true); 
    } 
    else 
    { 
     this.StartFlag = true; 
     if (this.Interval < this.timeout) 
     { 
      this.timeout = this.Interval; 
     } 
    } 
} 

回答

1

您可以創建自己的線程並等待手柄:

void RegisterWaitForSingleObject(WaitHandle waitHandle, WaitOrTimerCallback callback, object state, int timeout) 
{ 
    var thread = new Thread((ThreadStart) 
     delegate() 
     { 
      if (waitHandle.WaitOne(timeout, false)) 
      { 
       callback(state, false); 
      } 
     }); 

    thread.IsBackground = true; 
    thread.Start(); 
} 
+0

waitHandle.WaitOne應該是這樣的CF if(waitHandle.WaitOne(timeout,bool)) – 2009-11-09 13:32:06