मैं मैं क्या के लिए पूछ रहा हूँ करने के लिए अगले कोड उपयोग कर रहा हूँ:बटन दबाए जाने पर थ्रेड कैसे शुरू करें और फिर दबाए जाने पर इसे रोकें?
if (currBusyThrd != null && currBusyThrd.IsAlive)
{
currBusyThrd.Abort();
}
ThreadPool.SetMaxThreads(1, 1);
//queue the work for thread processing
ThreadPool.QueueUserWorkItem(new WaitCallback(WaitCallbackMethod))
"WaitCallbackMethod" विधि है::
void WaitCallbackMethod(object stateInfo)
{
// argList : i put some argument in a list to use it in "MethodToCall" ...
BeginInvoke(caler,argList);
}
private delegate void CallerDelegate(object e);
CallerDelegate caler = new CallerDelegate(MethodToCall);
बटन क्लिक करें घटना पर
और जिस विधि को मैं थ्रेड द्वारा कॉल कर रहा हूं वह है:
void MethodToCall(object args)
{
//Here I get the thread I'm calling to stop it when btn clicked again
currBusyThrd = Thread.CurrentThread;
// The rest of the code ...
}
मुझे लगता है कि यह गलत है ... यह कैसे सही है?
वास्तव में कॉलिंग TextBox_KeyUp द्वारा होगी .. इसलिए जब भी उपयोगकर्ता एक char दर्ज करता है तो कोड फिर से निष्पादित होगा .. और BackgroundWorker काम नहीं करता है।
तो तुम शुरू करने और हर दूसरे कीस्ट्रोक के साथ एक लंबे समय से चल धागा रोक रहे हैं? –
हाँ, बिल्कुल, मैं – Dabbas
@ Al0NE करने की कोशिश कर रहा हूं, मैंने अपना जवाब अपडेट कर दिया है। ExecuteThreadLogicCondically() विधि देखें। –