में कॉल किया गया है, मेरे पास यह छोटी विधि है जिसे थ्रेड सुरक्षित माना जाता है। सबकुछ तब तक काम करता है जब तक कि मैं शून्य के बजाए वापसी मूल्य नहीं चाहता। BeginInvoke कहलाता है जब मैं वापसी मूल्य कैसे प्राप्त करूं?वापसी मूल्य कैसे प्राप्त करें जब BeginInvoke/Invoke को C#
public static string readControlText(Control varControl) {
if (varControl.InvokeRequired) {
varControl.BeginInvoke(new MethodInvoker(() => readControlText(varControl)));
} else {
string varText = varControl.Text;
return varText;
}
}
संपादित करें: मैं होने लगता है BeginInvoke इस मामले मैं जीयूआई से मूल्य की जरूरत के रूप में धागा जारी रखने से पहले में nessecary नहीं है। तो Invoke का उपयोग भी अच्छा है। मूल्य वापस करने के लिए उदाहरण के उदाहरण में इसका उपयोग करने के लिए कोई संकेत नहीं है।
private delegate string ControlTextRead(Control varControl);
public static string readControlText(Control varControl) {
if (varControl.InvokeRequired) {
varControl.Invoke(new ControlTextRead(readControlText), new object[] {varControl});
} else {
string varText = varControl.Text;
return varText;
}
}
लेकिन यकीन है कि कैसे मान जो कोड का उपयोग कर या तो पाने के लिए;)
यदि आपको किसी आमंत्रण से लौटाए गए मूल्य के साथ काम करने की आवश्यकता है, तो ऐसा होना चाहिए क्योंकि आपको "निरंतरता उत्तीर्ण शैली" पैटर्न की आवश्यकता है। जिसे 'async',' await' और 'कार्य' के साथ कम किया जा सकता है। –