C# 任务。运行取消
在为mac更新VS之前,我使用C# 任务。运行取消,c#,xamarin,C#,Xamarin,在为mac更新VS之前,我使用 using (var cancelSrc = new CancellationTokenSource()) { using (UserDialogs.Instance.Loading("Connecting", cancelSrc.Cancel, "Cancel")) { a
using (var cancelSrc = new CancellationTokenSource())
{
using (UserDialogs.Instance.Loading("Connecting", cancelSrc.Cancel, "Cancel"))
{
await device.Connect().ToTask(cancelSrc.Token);
}
}
连接一个可扩展的设备
更新后的IDE出现错误“运算符”。“不能应用于void类型的操作数”
我用的
await Task.Run(() =>
{
cancelSrc.Token.ThrowIfCancellationRequested();
while (!cancelSrc.Token.IsCancellationRequested)
{
device.Connect();
}
},cancelSrc.Token);
而不是wait device.Connect().ToTask(cancelSrc.Token)代码>
但当我点击应用程序中的加载屏幕时,它除了保持连接之外什么也不做,而且似乎连接不会永远结束。
请给我一些帮助 似乎每个人都对我的问题不感兴趣,我自己用某种方式解决它看起来不那么聪明。
我的解决方案是:实现一个任务方法
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);
这对我有用