终止Matlab调用的外部代码进程

4次浏览(最近30天)
Yonatan拿坦业
Yonatan拿坦业 2020年1月7日
评论道: Guillaume 2020年2月3日
这就跟你问声好!
我有一个由matlab调用的c#函数,它需要很长时间来处理。此外,我需要能够从UI中引发c#标志(用于终止进程)。
所以我需要像这样做:
%%
%在主文件:
%使用abort按钮启动UI
UI_guide ();
%调用c#的长函数
long_c_sharp_function ();
%%
%在指南。m文件:
函数button_pressed_callback ()
c_sharp_function_to_raise_flag ();
结束
问题是,“abort”按钮回调只在长函数完成后执行——这意味着我不能中止进程。
我该怎么做才能解决这个问题?我应该考虑另一种方法吗?

答案(1)

安德鲁Janke
安德鲁Janke 2020年1月31日
没有通用的机制来终止c#函数调用。c#函数必须专门为支持中止而编写,你需要在一个独立的工作线程上调用它,以允许主线程执行超时,然后调用金宝app中止。
3评论
Guillaume
Guillaume 2020年2月3日
我被这个问题弄糊涂了, 我需要从UI中升起c#标志(用于终止进程)的能力 听起来你真的希望matlab是一个发送中止信号到一个长时间运行的c#代码。在这种情况下,就像Andrew写的那样没有机制。Matlab是单线程的,如果它把控制权交给了c#,在此期间它什么也做不了。
然而,如果你的c#代码生成一个新的线程做实际的处理并立即返回(例如使用任务),那么是的matlab可以然后继续做处理,然后设置一个标志。所有的异步逻辑需要在c#端实现,matlab无法帮助你。

登录评论。

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!