我要尋找一個合適的模式和解決以下問題最現代的方式:處理在C#.NET4應用程序在後臺多個輸入
我的應用程序期待來自多個來源的輸入,例如:圖形用戶界面,監控文件系統,語音命令,網絡請求等。當接收到輸入時,我需要將其發送到某些ProcessInput(InputData arg)
方法,該方法將開始在後臺處理數據,而不會阻止應用程序接收和處理更多數據,而在某些只要處理完成,方法就會返回一些結果。根據輸入,處理可能需要大量不同的時間。對於初學者,我不需要檢查進度或取消處理的能力。
閱讀對MSDN和一些搖滾明星程序員,我真搞此處應該使用什麼樣的模式,更重要的是它的.NET
我的發現功能的文章的相關博客文章一打後:
- ThreadPool.QueueUserWorkItem - 最簡單的理解,關於將結果返回
- BackgroundWorker不是十分便利 - 似乎只能針對比較簡單的任務,所有工人在單個線程上運行使用?
- Event-based Asynchronous Pattern
- Tasks in Task Parallel Library
- C# 5 async/await - 這似乎是從工作任務的快捷方式並行
注:
性能是很重要的,所以服用多核系統的優勢時,可能會真的很好。
這不是一個web應用程序。
我的問題讓我想起了一個TCP服務器(真的是任何類型的服務器),其中應用程序不斷監聽多個套接字上的新連接/數據,我發現文章Asynchronous Server Socket,我很好奇這個模式是否可能成爲可能的解決方案爲了我。
BuildWindows視頻通常很有教育意義。謝謝! – m0s 2012-01-08 07:30:08