Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接收来自托管代码中Fortran的事件通知_C#_Fortran - Fatal编程技术网

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

C# 接收来自托管代码中Fortran的事件通知,c#,fortran,C#,Fortran,我有一个fortran非托管代码dll作为计算引擎,一个C窗体作为GUI 现在,fortran中的计算很长,所以为了不让用户感到厌烦,我决定使用Asynch命令创建一个进度条。fortran dll将负责在计算过程中将消息放入进度栏 你知道怎么做吗?单一责任:用户界面应该负责显示进度信息,无论是进度条还是其他视觉效果。Fortran不应该知道信息是如何显示的,它只是发出一些事件,说事情刚刚开始,55%,就要完成了,哎呀,不起作用了 这些活动是如何通过的?您可能需要某种缓冲技术,可能需要使用命名管

我有一个fortran非托管代码dll作为计算引擎,一个C窗体作为GUI

现在,fortran中的计算很长,所以为了不让用户感到厌烦,我决定使用Asynch命令创建一个进度条。fortran dll将负责在计算过程中将消息放入进度栏


你知道怎么做吗?

单一责任:用户界面应该负责显示进度信息,无论是进度条还是其他视觉效果。Fortran不应该知道信息是如何显示的,它只是发出一些事件,说事情刚刚开始,55%,就要完成了,哎呀,不起作用了


这些活动是如何通过的?您可能需要某种缓冲技术,可能需要使用命名管道或消息队列技术。Fortran可以使用C库,因此我想,一旦您选择了Fortran不直接支持的通信技术,您可以从编写一点C开始,然后从Fortran获得它。

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


这些活动是如何通过的?您可能需要某种缓冲技术,可能需要使用命名管道或消息队列技术。Fortran可以使用C库,所以我想,一旦你选择了一种通信技术,如果Fortran不直接支持这种技术,你可以从写一点C开始,然后从Fortran获得它。

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

此外,这里有一个链接解释回调方法:


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

此外,这里有一个链接解释回调方法:


谢谢,你有一个关于如何做的例子吗?谢谢,你有一个关于如何做的例子吗?谢谢,你有一个关于这个的例子吗?你不需要例子,只要调用这个新方法,就像调用Fortran dll中的另一个计算函数一样。看看这个:你的链接很好,你能把它放在你的主要答案中,这样我就可以适当地奖励你了。谢谢,你有这样一个例子吗?你不需要例子,只要调用这个新方法,就像调用Fortran dll中的另一个计算函数一样。看看这个:你的链接很好,你能把它写在你的主要答案里吗?这样我就可以适当地奖励你了。