2011-07-05 29 views
0

我正在做一個將播放媒體的Web應用程序。 我有一個包含一個方法的類A,說的MyMethod:等待一個進程完成ThreadPool.UnsafeQueueUserWorkItem()函數內部

public void MyMethod() 
     { 
      ..... 
      Process proc = .... 
      ThreadPool.UnsafeQueueUserWorkItem((o) => 
      { 
       proc.WaitForExit(); 
       proc.Close(); 
       ..... 

      },null); 
      } 

代碼我的網頁,我會調用此方法將運行過程,然後將發揮媒體的背後,過程轉換文件。 FLV類型。我的問題是因爲即使使用異步系統,即使線程沒有完成卸載工作,頁面也會加載,但不會播放媒體。我如何等待ThreadPool中的進程終止?然後加載我的頁面?非常感謝。

+2

如果你想等待代碼完成,你爲什麼排隊一個線程池任務做到這一點呢? –

+0

我希望它在加載頁面之前完成 – Grace

+0

那麼爲什麼不在頁面加載之前的最後一點調用'WaitForExit'呢? –

回答

1

如果您希望您的asp.net resqponse等待處理結果,請直接調用WaitForExit。不要使用ThreadPool。

如果由於某種原因,您覺得您絕對需要使用ThreadPool,則可以使用ManualResetEvent等待調用線程中的結果。

+0

我做了兩個方法..一個同步,一個異步。 ive沒有同步的概率..我用了waitforexit ...但是m面臨線程池的問題..生病檢查手冊結束 – Grace

+0

@Grace,如果你想等待,不要使用ThreadPool。 –

+0

oke現在我明白了,謝謝 – Grace