Задача. Отмена запуска - PullRequest
0 голосов
/ 21 мая 2018

перед обновлением VS для Mac я использую

using (var cancelSrc = new CancellationTokenSource())
                    {
                        using (UserDialogs.Instance.Loading("Connecting", cancelSrc.Cancel, "Cancel"))
                        {
                            await device.Connect().ToTask(cancelSrc.Token);
                        }
                    }

для подключения устройства

после того, как в обновленной IDE появляется ошибка «operator».не может быть применен к операнду типа void "

, который я использую

await Task.Run(() => 
                            {
                                cancelSrc.Token.ThrowIfCancellationRequested();
                                while (!cancelSrc.Token.IsCancellationRequested)
                                {
                                    device.Connect();
                                }
                            },cancelSrc.Token);

вместо await device.Connect().ToTask(cancelSrc.Token);, но когда я нажимаю на экране загрузки в приложении, он ничего не делает, только продолжает соединение, иКажется, связь не закончится навсегда.пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 30 мая 2018

Кажется, что все не интересуются моим вопросом, я решаю его сам, каким-то образом выглядит не очень умно.Вот мое решение: реализовать метод 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);

это работает для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...