C# Threading.Suspend in Obsolete, thread has been deprecated?

前端 未结 3 1464
忘掉有多难
忘掉有多难 2021-02-05 22:19

In my application, I am performing my file reading by another thread(other that GUI thread). There are two buttons that suspend and resume the Thread respectively.



        
3条回答
  •  萌比男神i
    2021-02-05 23:05

     //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();
    

    Note that all operations are completed before the thread is "suspended"

    What you want

    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;
    }
    

提交回复
热议问题