问题描述
- 调用线程的Resume、Suspend方法,有警告信息,怎么将它显示正常;
-
C# Winform项目中,用线程调用Resume和Suspend这两个方法,在VS中提示这两个方法已过时。
怎么样让VS不提醒这种信息或有什么方法来替换这个对应的方法。谢谢!
解决方案
The reason Suspend and Resume are deprecated is because there are no guarantees at what point in the execution the thread will be suspended on. This is a bad thing. The issue is described here as well as a solution.
The solution should involved a WaitHandle (maybe AutoResetEvent or ManualResetEvent) which you can use to signal to your autoReadThread to stop/start.
//true makes the thread start as "running", false makes it wait on _event.Set()
ManualResetEvent _event = new ManualResetEvent(true);
Thread _thread = new Thread(ThreadFunc);
public void ThreadFunc(object state)
{
while (true)
{
_event.Wait();
//do operations here
}
}
_thread.Start();
// to suspend thread.
_event.Reset();
//to resume thread
_event.Set();
private void ThreadFunc(object fileName)
{
string fileToUpdate = (string)fileName;
while (Run)
{
_event.WaitOne();
string data;
using (StreamReader readerStream = new StreamReader(fileToUpdate))
{
data = readerStream.ReadToEnd();
}
if (Textbox.InvokeRequired)
{
UpdateTextCallback back = new UpdateTextCallback(UpdateText);
Textbox.BeginInvoke(back, new object[] { data });
}
Thread.Sleep(1000);
}
}
private void UpdateText(string data)
{
Textbox.Text = data;
}
时间: 2025-01-21 02:20:43