如何从C/C++中止MATLAB m文件功能?

Sha*_*mer 2 c++ matlab abort

我将一个MATLAB项目部署到一个DLL中,从C++中调用,它运行得很好.快乐的时光.

但是当用户要求取消操作时会发生什么?

我尝试创建一个global名为的变量UserAborted.在MATLAB中运行long函数之前,我将其初始化为0.我还写了以下两个函数:

function AbortIfUserRequested
    global UserAborted

    if (UserAborted == 1)
        error('User Abort');
    end
end

function UserAbortLongFunction
    global UserAborted

    UserAborted = 1;
end
Run Code Online (Sandbox Code Playgroud)

AbortIfUserRequested在我的长函数中循环的每次迭代都会调用它.我也出口了UserAbortLongFunction.

我预计在调用之后不久UserAbortLongFunction,long函数会调用AbortIfUserRequested,并抛出错误.

相反,long函数一直运行到结束,然后才会UserAborted更改get 的值.

我想做的就是在用户要求时中止那个长功能!有没有办法做到这一点?

Mr *_*ooz 5

尝试在AbortIfUserRequested中调用DRAWNOW函数.虽然Matlab是单线程的(从API的角度来看),但它确实允许中断.我通过使用纯M代码调用此函数取得了成功,其中用户输入(如Ctrl-C)否则会被锁定.