2010-05-14 67 views
2

我正在開發一個silverlight應用程序,我使用webservices。服務器負責處理一些文本,獲取音素信息,轉換爲視頻,生成音頻並編碼爲mp3。返回visemes列表和創建音頻文件的路徑。然後音頻流式傳輸到客戶端。Silverlight C#webservices等待進程

但現在,我有一個問題。我需要服務器等待完整的音頻編碼創建。有時,音頻還沒有準備好,而且它不會爲客戶端流式傳輸。我已經嘗試過thread.join,但它對長文本也有同樣的問題。

應該如何解決此問題的最佳方法?

在此先感謝

回答

1

也許我誤解你的問題,但我想這應該不是當前的大問題,因爲異步模式實際上應該幫助你...我這種情況的直觀理解是這樣的:

myWebServiceClient.ProcessTextCompleted += (sndr, evnt) => 
{ 
    IsBusy = false; 
    var url = evnt.Result.PathToCreatedAudioFile; 
    PlayAudioFile(url); 
}; 
IsBusy = true; 
myWebServiceClient.ProcessTextAsync("abcdefg"); 

也許你可以給出更多的信息,爲什麼這不適合你的情況。

乾杯,亞歷克斯

+0

我認爲這個問題是因爲服務是異步,因此不會等待所有操作完成,它只是將所有的信息。但由於編碼功能可能需要更長時間,web服務會獲取所需的信息(流地址等),但文件尚未準備就緒。我需要等待編碼過程。謝謝您的幫助! :) – 2010-05-18 09:23:46

+0

那麼,只有服務器知道處理完成的時間,所以我認爲在它實際完成處理請求和文件準備就緒之前它不應該返回任何內容。所以也許問題在於你的服務器端實現,而不是客戶端。 – 2010-05-18 09:39:42

+0

是的,這就是爲什麼我創建了一個線程來編碼,然後thread.join方法。但它不起作用。 :( – 2010-05-18 10:31:46