如何在此处显示下一个工具提示之前等待5秒钟?

时间:2015-05-23 18:12:22

标签: c# winforms timer

我相信我已经遵循了大多数指南,所以希望这个问题不合适。对于初学者来说,我已经使用Google搜索,但老实说在这种情况下不知道谷歌会是什么。这是一个措辞奇怪的问题。

基本上,我的困境是:我试图让两个角色进行对话,使用Winforms和C#。 UserControl上只有两个静态的人来回讲话,但是用户可以使用按钮来选择他说回到另一个角色的内容。每当用户按下按钮说出某些内容时,我希望其他角色用类似语音的工具提示进行回复。

public void button1_Click(object sender, EventArgs e)
{
    if (conversationStage == 1)
    {
        speech.createSpeech("Response to dialog 1-1.", new Point(420, 250), this, 5000);
        caseSwitch++;
        buttonSwitcher();
    }

我期望做的事情是这样的:

public void button1_Click(object sender, EventArgs e)
{
    if (conversationStage == 1)
    {
        speech.createSpeech("Response to dialog 1-1.", new Point(420, 250), this, 5000);
        Wait(5);
        speech.createSpeech("Next speechbubble here..." <other parameters>);
        caseSwitch++;
        buttonSwitcher();
    }

当然,这实际上并不奏效。在某人决定建议我使用Thread.Sleep之前,我已经尝试过了,并且由于它停止了所有GPU更新,这意味着语音气泡从不渲染,这是不好的。我相信我唯一的选择是使用一个典型的Winforms计时器,但我似乎无法操纵它们(我只是不知道如何),我可以简单地将它集成到这里的if语句中。

我现在被困住了,我不知道该怎么办。

1 个答案:

答案 0 :(得分:0)

使用.NET 4.5,您可以使用新的async/await框架在不锁定线程的情况下进入休眠状态。

点击此帖子 How can I perform a short delay in C# without using sleep?