Abort external code process called by Matlab
조회 수: 3 (최근 30일)
이전 댓글 표시
Hi!
I have a c# function called by matlab, which takes long time to process. Also, I need the ability to raise a c# flag (used for aborting the process) from a UI .
So I need to do something like the follow:
%%
% on main file:
% launching the ui with the abort button
UI_guide();
% calling the long c# function
long_c_sharp_function();
%%
% on the guide .m file:
function button_pressed_callback()
c_sharp_function_to_raise_flag();
end
The problem is, the "abort" button callback is executed only after the long function finished - which mean I can't abort the process.
what can i do to solve this problem? should i consider another method?
댓글 수: 0
답변 (1개)
Andrew Janke
2020년 1월 31일
There's no general mechanism for aborting a C# function call. The C# function has to be written specifically to support aborting, and you'll need to call it on a separate worker thread to allow your main thread to do the timeout and then call the abort.
댓글 수: 3
Andrew Janke
2020년 2월 3일
Ah. In that case, you need to run your C# code on another thread. Run your C# code using the C# Task mechanism - https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-based-asynchronous-programming - and that will leave the Matlab execution thread free for your GUI callbacks to happen on.
Guillaume
2020년 2월 3일
I'm confused by the question, " I need the ability to raise a c# flag (used for aborting the process) from a UI" really sounds like you want matlab to be the one that send the abort signal to a long running C# code. In that case, as Andrew wrote there is no mechanism for that. Matlab is single threaded and if it has handed control to C#, there's nothing it can do in the meantime.
However, indeed if your C# code spawn a new thread doing the actual processing and returns immediately (using tasks for example), then yes matlab can then continue to do processing and then sets a flag. All the async logical needs to be implemented on the C# side, matlab can't help you with it.
참고 항목
카테고리
Help Center 및 File Exchange에서 Coordinate Systems에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!