繁体   English   中英

C#,visual studio 2010,如何停止一个方法,线程?

[英]C#, visual studio 2010, how to stop a method, threads?

我只是开始学习c#(和一般的编程)。 我正在做一个基于字符串播放音乐的小型大学项目。 我正在使用Windows窗体。 当你按下“播放”按钮时,它会启动一个带有for循环的方法,该循环逐个遍历字符串中的每个字符并播放相应的音符。 工作得很好,但我一直在尝试添加一个“停止”按钮,这将停止播放音乐,但到目前为止,当音乐播放时,表格被冻结,我无法击中任何其他按钮...只是想知道是我可以通过不同的线程实现我想要的唯一方法吗? (我们还没看过线程!)

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

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

这是一个概述:

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

只是想知道是我能通过不同线程实现我想要的唯一方法吗?

通常,这是最常见的方法。 我建议你看一下BackgroundWorker组件。 它允许您在后台线程上运行工作(“播放注释”),但也提供取消支持。

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

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

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

使用Application.DoEvents(); 如果你还不想使用线程,那么在每次迭代之后。 Theads是最好的解决方案,但正如我理解你的问题,你正在等待你先学习线程:)调用DoEvents()允许在你调用它时处理窗口消息,所以如果你经常调用它,窗口不应该被阻止。 但请将此视为解决方法, 而不是最佳解决方案 最好的灵魂将使用线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM