ExecutionContext.SuppressFlow();
का उद्देश्य क्या है? निम्नलिखित कोड में वास्तव में क्या दबाया जाता है?निष्पादन थ्रेड के कॉन्टेक्स्ट
मैं इस परीक्षण कोड है ...
protected void btnSubmit_Click(object sender, EventArgs e)
{
Thread[] th = new Thread[100];
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
AsyncFlowControl cntrl = ExecutionContext.SuppressFlow();
for (int i = 0; i < th.Length; i++)
{
th[i] = new Thread(new ParameterizedThreadStart(ThreadMethod));
th[i].Name = "Thread #" + (i+1).ToString();
th[i].Start((i+1).ToString());
}
ExecutionContext.RestoreFlow();
foreach (Thread t in th)
{
t.Join();
}
Response.Write(response);
}
String response = null;
Random rnd = new Random(1000);
private void ThreadMethod(object param)
{
if (param != null)
{
string temp = param as string;
if (temp != null)
{
//To test what is the current culture I get for this thread execution
System.Globalization.CultureInfo info = Thread.CurrentThread.CurrentCulture;
for (int i = 0; i <= 10; i++)
{
Thread.Sleep(rnd.Next(2000));
response += Thread.CurrentThread.ManagedThreadId.ToString() + ":"
+ Thread.CurrentThread.Name + ": " + temp + "<br/>";
}
}
}
}
यह ऐप डेवलपमेंट फाउंडेशन पुस्तक में लिखा गया है कि, "डिफ़ॉल्ट रूप से, निष्पादन संदर्भ सहायक धागे पर बहता है, लेकिन यह लागत पर ऐसा करता है। यदि आप संदर्भ जानकारी के प्रवाह को रोकना चाहते हैं (प्रदर्शन में वृद्धि लेकिन वर्तमान सुरक्षा, संस्कृति, और लेनदेन संदर्भ जानकारी खोना), आप ExecutionContext वर्ग का उपयोग कर सकते हैं। ", ** @ nobugz: ** क्या आप कृपया इसे समझा सकते हैं ?? –
* संस्कृति * वर्तमान धागा भाषा, मुद्रा या नंबर प्रतिनिधित्व, आदि के रूप में इस तरह की जानकारी का मतलब है – serhio
** @ Serhio: ** हाँ और इस CultureInfo में शामिल किया जाता है तो इसका मतलब यह है कि अगर हम को दबाने और संस्कृति को बदलने यह नहीं मिलेगा इस दायरे में बनाए गए धागे को अग्रेषित किया गया ?? और अगर हम दबाने नहीं देते हैं तो यह सहायक धागे से गुज़र जाएगा ?? उपर्युक्त कोड में, हालांकि, चाहे मैं दबाने या नहीं, थ्रेड संस्कृति अलवासी एन-यूएस है, जो मशीन डिफ़ॉल्ट है। –