2010-04-16 23 views
1

我有一個Fortran(非託管代碼)dll作爲計算引擎,並且C#表單作爲GUI。從管理代碼中的Fortran接收事件通知廣泛播出

現在,fortran中的計算很長,所以爲了不讓用戶厭煩,我決定使用Asynch命令創建一個進度條。隨着計算的進行,Fortran dll將負責將消息放入進度條中。

任何想法如何做到這一點?

回答

1

你必須在Fortran dll中實現用於報告數字進度的anoter函數,例如:「GetCalculationProgress」返回兩個整數當前迭代和總迭代次數),你可以調用這個函數pe在您的C#應用​​程序的另一個線程中進行翻譯並讀取這些值。在Fortran中,您可能必須使用全局變量來跟蹤這些變量。

此外,這裏是解釋回調方法的鏈接:

http://xtechnotes.blogspot.com/2008/07/callback-to-c-from-unmanaged-fortran.html

+0

謝謝,你有這樣的例子嗎? – Graviton 2010-04-16 06:57:43

+0

您不需要示例,就像調用Fortran dll中的其他計算函數一樣調用該新方法。 – 2010-04-16 09:11:29

+0

看看這個:http://xtechnotes.blogspot.com/2008/07/callback-to-c-from-unmanaged-fortran.html – 2010-04-16 09:12:37

0

單一責任:UI負責顯示進度信息,無論是進度條還是其他視覺效果。 Fortran不應該知道信息是如何顯示的,而只是發出「事件」,表示諸如「剛剛開始」,「55%」,「差不多完成」和「沒有工作的哎呀」等事件。

事件如何通過?您可能需要某種「緩衝」技術,可能使用(命名)管道或消息隊列技術。Fortran可以使用C庫,所以我猜想如果不支持這種技術由Fortran直接開始,你可以寫一點C,然後從Fortran那裏得到。

+0

謝謝您對如何做到這一點的例子嗎? – Graviton 2010-04-16 06:57:19