[英]Task.Run cancellation
在我为Mac更新VS之前
using (var cancelSrc = new CancellationTokenSource())
{
using (UserDialogs.Instance.Loading("Connecting", cancelSrc.Cancel, "Cancel"))
{
await device.Connect().ToTask(cancelSrc.Token);
}
}
连接ble设备
更新后的IDE出现错误“ operator'”。 不能应用于void类型的操作数”
我用的
await Task.Run(() =>
{
cancelSrc.Token.ThrowIfCancellationRequested();
while (!cancelSrc.Token.IsCancellationRequested)
{
device.Connect();
}
},cancelSrc.Token);
而不是await device.Connect().ToTask(cancelSrc.Token);
但是当我在应用程序的加载屏幕中轻按时,它什么都没有做,而是继续保持连接,并且似乎连接不会永远结束。 请给我一些帮助!
似乎每个人都对我的问题不感兴趣,我以某种不太聪明的方式自己解决了这个问题。 这是我的解决方案:实现Task方法
public async Task ConnectDevice(IDevice device,CancellationTokenSource cancelSrc)
{
await Task.Run(() =>
{
device.Connect();
while ((cancelSrc.Token.IsCancellationRequested==false)&&(device.IsConnected() == false))
{
}
}, cancelSrc.Token);
}
当我想连接时,我会这样:
await ConnectDevice(device, cancelSrc);
这对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.