[英]What is the correct way to have a neverending loop running on a separate thread in WPF?
我正在创建一个应用程序,它将继续通过TCP侦听传入的信号,直到通过按钮停止它或关闭该应用程序为止。 作为运行该应用程序的PC,它需要运行大量占用CPU的资源,我认为我应该在单独的线程中运行它,以便它不会占用CPU。
我的想法是使用一个在DoWork()
中包含一个内部循环的BackgroundWorker
,该循环检查IsCancellationPending
标志(当用户单击停止按钮或退出该应用程序时,通过CancelAsync()
方法设置该标志)。 这是最佳的选择,还是有其他更受欢迎的方法?
你正在做的IO操作的约束,所以你应该甚至不使用另一个线程的 。 您应该异步处理工作,其中会触发事件,回调,任务等,以表明您有一条消息要处理,可以对其进行处理,然后再回到完全不使用任何线程的状态 。
创建一个仅花费大部分时间坐在那里而在等待网络活动时却什么也不做的线程,并不是对资源的有效利用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.