我需要編寫一個應用程序來遍歷我們的數據庫,並在每條記錄上執行各種分析。爲了做到這一點(部分用於創建插件支持的學習練習),我想使用插件模型。.net中的插件體系結構和處理事件
目前,我在我的主應用程序中有一個簡單的界面,該插件可以實現。然後,我的應用程序將所有DLL加載到一個文件夾中查找實現Interface的文件夾。
正如你在下面的僞代碼中看到的,我必須通過調用處理方法的所有加載插件繼續執行一個循環。
Sub ProcessData()
For Each Record In MyDataSet
For Each Plugin In MyPluginCollection
Plugin.ProcessRecord(Record)
Next
Next
End Sub
如果我想讓每個插件異步啓動,那麼當所有插件完成後我將如何跟蹤?
Sub ProcessData()
For Each Record In MyDataSet
# Start all the plugins off on their processing task
For Each Plugin In MyPluginCollection
CreateNewThreadFor Plugin.StartProcess(Record)
Next
# Do not start the next record until this record is completed by all plugins
Dim Complete As Boolean = False
While Not Complete
For Each Plugin In MyPluginCollection
If Plugin.IsBusy Then
Complete = False
End If
Next
DoEvents
End While
Next
End Sub
還是我只是打開自己的世界,試圖以這種方式多線程的痛苦?
嗯,這似乎很整齊。我會在設置Events方法之前首先嚐試這一個。 – Cylindric 2009-11-05 17:03:50