मेरे पास एक अलग थ्रेड में चलने वाली विधि है। थ्रेड बनाया गया है और एक विंडोज़ अनुप्रयोग में एक फॉर्म से शुरू किया गया है। यदि थ्रेड के अंदर से एक अपवाद फेंक दिया जाता है, तो इसे मुख्य एप्लिकेशन पर वापस करने का सबसे अच्छा तरीका क्या है। अभी, मैं धागे में मुख्य रूप का संदर्भ भेज रहा हूं, फिर थ्रेड से विधि का आह्वान कर रहा हूं, और विधि को मुख्य अनुप्रयोग धागे द्वारा बुलाया जा सकता है। क्या ऐसा करने का सबसे अच्छा तरीका है क्योंकि मैं अब इस बात से सहज नहीं हूं कि मैं इसे कैसे कर रहा हूं। मेरी फार्म केकिसी अन्य थ्रेड से अपवादों को पकड़ना
उदाहरण:
public class frmMyForm : System.Windows.Forms.Form
{
/// <summary>
/// Create a thread
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTest_Click(object sender, EventArgs e)
{
try
{
//Create and start the thread
ThreadExample pThreadExample = new ThreadExample(this);
pThreadExample.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName);
}
}
/// <summary>
/// Called from inside the thread
/// </summary>
/// <param name="ex"></param>
public void HandleError(Exception ex)
{
//Invoke a method in the GUI's main thread
this.Invoke(new ThreadExample.delThreadSafeTriggerScript(HandleError), new Object[] { ex });
}
private void __HandleError(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
मेरी धागा वर्ग का उदाहरण:
public class ThreadExample
{
public delegate void delThreadSafeHandleException(System.Exception ex);
private Thread thExample_m;
frmMyForm pForm_m;
private frmMyForm Form
{
get
{
return pForm_m;
}
}
public ThreadExample(frmMyForm pForm)
{
pForm_m = pForm;
thExample_m = new Thread(new ThreadStart(Main));
thExample_m.Name = "Example Thread";
}
public void Start()
{
thExample_m.Start();
}
private void Main()
{
try
{
throw new Exception("Test");
}
catch (Exception ex)
{
Form.HandleException(ex);
}
}
}
धन्यवाद, मैंने कभी भी एक्शन का उपयोग कभी नहीं किया है। अच्छा सुझाव। –
Jeremy