我相信我已经遵循了大多数指南,所以希望这个问题不合适。对于初学者来说,我已经使用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语句中。
我现在被困住了,我不知道该怎么办。
答案 0 :(得分:0)
使用.NET 4.5
,您可以使用新的async/await
框架在不锁定线程的情况下进入休眠状态。
点击此帖子 How can I perform a short delay in C# without using sleep?