Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务。运行取消_C#_Xamarin - Fatal编程技术网

C# 任务。运行取消

C# 任务。运行取消,c#,xamarin,C#,Xamarin,在为mac更新VS之前,我使用 using (var cancelSrc = new CancellationTokenSource()) { using (UserDialogs.Instance.Loading("Connecting", cancelSrc.Cancel, "Cancel")) { a

在为mac更新VS之前,我使用

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);
这对我有用