我必須創建一個將每天啓動幾次的應用程序(它是非交互式的)。Workflow Foundation:異步操作(冗長的網絡I/O)
要運行,它需要來自Internet的大量數據(兆字節),而且通過相當慢的連接,所以WCF服務調用需要相當長的一段時間。
同時,它需要執行本地計算並具有複雜的初始化過程。
所以,我想要做的是創建一個工作流,異步提取數據(需要幾分鐘),而已經初始化/本地計算。
有沒有辦法做到這一點?
我必須創建一個將每天啓動幾次的應用程序(它是非交互式的)。Workflow Foundation:異步操作(冗長的網絡I/O)
要運行,它需要來自Internet的大量數據(兆字節),而且通過相當慢的連接,所以WCF服務調用需要相當長的一段時間。
同時,它需要執行本地計算並具有複雜的初始化過程。
所以,我想要做的是創建一個工作流,異步提取數據(需要幾分鐘),而已經初始化/本地計算。
有沒有辦法做到這一點?
您可以對每個異步操作使用BackgroundWorker組件 - 一個用於計算,一個用於數據下載。
我的建議是每個操作使用一個線程。在你開始每個線程之後,每個線程都要調用thread.Join()來等待每個線程完成。
例如
Thread[] workers = new Thread[2];
workers[0] = new Thread(dataDownloader.Fetch);
workers[1] = new Thread(calculator.DoComplexCalculations);
foreach(Thread t in workers)
{
t.Start();
}
foreach(Thread t in workers)
{
t.Join();
}
您可以生成wcf服務的異步類(使用commandlinetool)。如果您運行這些異步方法,它們立即返回並在完成後調用回調委託。通過這種方式,您可以自由地在等待時進行所有計算