मेरे आवेदन में, मैं अपनी फाइल को एक और थ्रेड (अन्य जो जीयूआई थ्रेड) द्वारा पढ़ रहा हूं। दो बटन हैं जो क्रमशः थ्रेड को निलंबित और फिर से शुरू करते हैं।सी # थ्रेडिंग। अप्रचलित में समर्थन, धागा को हटा दिया गया है?
private void BtnStopAutoUpd_Click(object sender, EventArgs e)
{
autoReadThread.Suspend();
}
private void BtnStartAutoUpd_Click(object sender, EventArgs e)
{
autoReadThread.Resume();
}
लेकिन मैं इस चेतावनी का सामना करना पड़ रहा हूँ,
Thread.Suspend मान्य नहीं है। सिस्टम में अन्य वर्गों का उपयोग करें। थ्रेड या संसाधनों की सुरक्षा के लिए मॉनिटर, म्यूटेक्स, इवेंट, और सेमफोर जैसे थ्रेडिंग। http://go.microsoft.com/fwlink/?linkid=14202
कोई भी मैं केवल एक धागा चलाता हूं (जीयूआई थ्रेड के बजाए), तो मैं यहाँ सिंक्रनाइज़ेशन कैसे लागू कर सकता हूं या मॉनीटर कर सकता हूं।
अद्यतन कोड:
class ThreadClass
{
// This delegate enables asynchronous calls for setting the text property on a richTextBox control.
delegate void UpdateTextCallback(object text);
// create thread that perform actual task
public Thread autoReadThread = null;
public ManualResetEvent _event = new ManualResetEvent(true);
// a new reference to rich text box
System.Windows.Forms.RichTextBox Textbox = null;
private volatile bool _run;
public bool Run
{
get { return _run; }
set { _run = value; }
}
public ThreadClass(string name, System.Windows.Forms.RichTextBox r1)
{
Textbox = r1;
Run = true;
this.autoReadThread = new Thread(new ParameterizedThreadStart(UpdateText));
this.autoReadThread.Start(name);
}
private void UpdateText(object fileName)
{
//while (true)
//{
// _event.WaitOne();
while (Run)
{
if (Textbox.InvokeRequired)
{
UpdateTextCallback back = new UpdateTextCallback(UpdateText);
Textbox.BeginInvoke(back, new object[] { fileName });
Thread.Sleep(1000);
}
else
{
string fileToUpdate = (string)fileName;
using (StreamReader readerStream = new StreamReader(fileToUpdate))
{
Textbox.Text = readerStream.ReadToEnd();
}
break;
//}
}
}
}
}
}
रन bool मूल्य, एक धागा यह (शुरू में अपने असली)
और धागा शुरू करने के लिए मैं इस वर्ग के उदाहरण बनाकर कर रहा हूँ (इस शुरुआत को नियंत्रित करता है अन्य वर्ग में धागा भी)
आप अपडेट नहीं दिखाते हैं: ए) आपका धागा कैसे शुरू होता है, बी) पूर्ण थ्रेड विधि। – jgauffin
InvokeRequired हमेशा सच है। आपका धागा कुछ भी उपयोगी नहीं करता है, सब कुछ यूआई थ्रेड पर चलता है। –