小编Dav*_*wal的帖子

Task.Delay没有被取消?

我正在尝试为游戏构建界面.游戏运行1分钟.该GetStop方法后60秒游戏停止.该游戏方法在游戏开始时和退出方法退出游戏.理想情况下,我想要的是当我在30秒后退出游戏时,计时器应该重置,点击"播放"按钮,计时器应该再次运行1分钟.这样下一场比赛就可以运行1分钟.如果我再次按退出按钮,则应重置计时器以进行下一场比赛.

但是,我的代码中似乎存在某个问题.每当我执行quit方法时,计时器似乎都保存在该状态.所以,如果我在30秒内退出比赛,那么下一场比赛将持续30秒.如果我在50秒内退出比赛,下一场比赛将只持续10秒.理想情况下,计时器应该重置但不会重置.

我在这里没有想法.任何人都可以提供一些建议?

private async Task GetStop(CancellationToken token)
{ 
    await Task.Run(async () =>
    {
        token.ThrowIfCancellationRequested();
        await Task.Delay(TimeSpan.FromSeconds(60), token);

        token.ThrowIfCancellationRequested();
        if (!token.IsCancellationRequested)
        {
            sendMessage((byte)ACMessage.AC_ESCAPE); 
        }
    }, token);
}

public async void Play()
{         
        sendMessage((byte)ACMessage.AC_START_RACE); 
        _cts.Cancel();

        if (_cts != null)
        {
            _cts.Dispose();
            _cts = null;
        }
        _cts = new CancellationTokenSource(); 
        await GetStop(_cts.Token);
   }

public void Quit()
{
        _cts.Cancel();
        if (_cts != null)
        {
            _cts.Dispose();
            _cts = null;
        }
    //
}
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library cancellation cancellationtokensource

8
推荐指数
1
解决办法
285
查看次数

使用Visual C++未正确安装QtQuick

我们正在尝试在visual studio 2015中运行OpenVR模拟器(链接https://github.com/matzman666/OpenVR-InputEmulator).构建成功.但是我们得到了错误

在此输入图像描述

似乎Qt库未在我们的机器中正确安装.我们已经尝试重新安装Qt库.下面的日志表明没有安装QtQuick.但是,我们已经完全安装了Qt 5.7.0.任何人都可以提供一些线索或帮助吗?

在此输入图像描述

qt visual-c++ qml qt-quick openvr

3
推荐指数
1
解决办法
140
查看次数