接收来自托管代码中Fortran的事件通知

时间:2010-04-16 05:53:08

标签: c# fortran

我有一个fortran(非托管代码)dll作为计算引擎,还有一个C#表单作为GUI。

现在,fortran中的计算很长,所以为了不让用户厌烦,我决定使用Asynch命令来创建进度条。随着计算的进行,fortran dll将负责将消息放入进度条。

知道如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您必须在Fortran dll中实现报告数字进度的anoter函数。例如:“GetCalculationProgress”返回两个整数(当前迭代和迭代总数)。您可以在C#应用程序的另一个线程中定期调用该函数并读取这些值。在Fortran中,您可能必须使用全局变量来跟踪这些变量。

此外,这是一个解释回调方法的链接:

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

答案 1 :(得分:0)

单一责任:UI负责显示进度信息,无论是进度条还是其他视觉效果。 Fortran不应该知道信息是如何显示的,而是只发出“事件”,说“刚刚开始”,“55%”,“差不多完成”和“哎呀不起作用。”

事件如何通过?您可能需要某种“缓冲”技术,可能使用(命名)管道或消息队列技术。 Fortran可以使用C库,所以我想如果你选择一种通信技术,如果Fortran不直接支持你,你可以先写一点C然后从Fortran获得它。