gpt4 book ai didi

c# - 异步 P/Invoke 调用

转载 作者:太空狗 更新时间:2023-10-29 18:25:53 25 4
gpt4 key购买 nike

我正在为机器人 Controller 开发一个包装库,它主要依赖于 P/Invoke 调用。

然而,机器人的许多功能,例如归位或移动,需要相当长的时间,并且在运行时进行线程锁定。

所以我想知道如何以异步方式包装功能,这样调用就不会阻塞我的 UI 线程。到目前为止,我的想法是使用任务,但我不确定这是正确的方法。

public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}

截至目前,有关 .NET 中异步模型的大多数 MSDN 文章主要是基于已经具有异步功能的库(例如 File.BeginRead 等)。但我似乎找不到太多关于如何首先实际编写异步功能的信息。

最佳答案

经过一番激烈的讨论,我认为这样的事情将是中间的黄金之路。

public void HomeAsync(Axis axis, Action<bool> callback)
{
Task.Factory
.StartNew(() => Home(axis))
.ContinueWith(task => callback(task.Result));
}

我认为这是两全其美。

关于c# - 异步 P/Invoke 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com