C#,Visual Studio 2010,如何停止方法,线程

本文关键字:何停止 方法 线程 2010 Visual Studio | 更新日期: 2023-09-27 18:37:19

我才刚刚开始学习c#(以及一般的编程)。我正在做一个基于弦乐的小型大学项目。我正在使用窗口窗体。当您按下"播放"按钮 a 时,它会启动一个带有 for 循环的方法,该方法逐个遍历字符串中的每个字符并播放适当的音符。工作正常,但我一直在尝试添加一个"停止"按钮,该按钮将在播放音乐时停止播放,但到目前为止,当音乐播放时,表单被冻结,我无法点击任何其他按钮......只是想知道是我可以通过拥有不同的线程来实现我想要的唯一方法? (我们还没有真正看过线程!

编辑:嘿,谢谢大家的回答!!那非常非常快!:)

C#,Visual Studio 2010,如何停止方法,线程

查看 BackgroundWorker 类以在后台播放音乐。 它比自己操作线程要简单得多。

以下是概述:

http://www.albahari.com/threading/part3.aspx#%5FBackgroundWorker

只是想知道是我可以通过拥有不同的线程来实现我想要的唯一方法?

通常,这是发生这种情况的最常见方法。 我建议看一下BackgroundWorker 组件。 它允许您在后台线程上运行工作("播放音符"),但也提供取消支持。

您的问题的简单答案是肯定的。

你在主线程上循环播放音乐,这意味着当代码在循环中执行时,你无法从 UI 接收任何事件。

要解决此问题,您需要在后台线程上运行音乐循环。

如果您不想使用线程,请在每次迭代后使用 Application.DoEvents();。Theads是最好的解决方案,但正如我理解你的问题,当你第一次学习线程时,你正在等待:)调用DoEvents()允许在调用时处理窗口消息,因此,如果您经常调用它,则不应阻止 Windows。但请考虑这是一种解决方法,而不是最佳解决方案。最好的灵魂将是使用线程。