如何在C#中添加3秒延迟?

时间:2016-11-07 01:56:20

标签: c# delay

我刚刚开始编码c#,我正在为我的discord服务器制作一个Bot。我最近添加了一个命令!meme,它将从大约100张不同的图片中随机抽取,以便在聊天中发送。第二个我实现了这个命令,每个人都完全滥用了它,而且由于发生了“meme spam”,每2秒就有15张图片在聊天中弹出。

我希望能够在命令本身再次使用之前添加3秒延迟。我尝试使用Thread.Sleep(3000);但是没有用。同样的 等待我在异步中使用的Task.Delay(3000);

       private void RegisterMemeCommand()
    {
        commands.CreateCommand("Meme")
            .Do(async (e) =>
            {
                int RandomMeme = rng.Next(MemeList.Length);
                string memetopost = MemeList[RandomMeme];
                await e.Channel.SendFile(memetopost);
            });
    }

1 个答案:

答案 0 :(得分:0)

由于我没有完整的代码,请根据您的问题,试试这个:

var lastSentOn=DateTime.MinValue;
commands.CreateCommand("Meme")
.Do(async (e) =>
{
    if((DateTime.Now - lastSentOn).TotalSeconds > 3)
    { 
        int RandomMeme = rng.Next(MemeList.Length);
        string memetopost = MemeList[RandomMeme];
        lastSentOn = DateTime.Now;
        await e.Channel.SendFile(memetopost);
    }
});

您可能需要将lastSentOn与某些用户ID相关联。在这种情况下,字典会有所帮助。