अधिक नौसिखिया प्रश्न:यह समानांतर क्यों है। प्रत्येक कोड प्रोग्राम को फ्रीज करता है?
यह कोड मुख्य विंडो में सूची से कई प्रॉक्सी पकड़ता है (मैं यह नहीं समझ सकता कि विभिन्न कार्यों के बीच चर बनाने के लिए कैसे किया जा सकता है) और प्रत्येक पर एक चेक (सरल httpwebrequest) और फिर उन्हें EndProxies नामक एक सूची में जोड़ता है।
किसी कारण से जब मैं स्टार्ट बटन दबाता हूं, तो पूरा प्रोग्राम लटकता है। मैं इस धारणा के तहत था कि समानांतर यूआई थ्रेड को छोड़कर प्रत्येक कार्रवाई के लिए समानांतर बनाता है ताकि यह उत्तरदायी हो?
private void start_Click(object sender, RoutedEventArgs e)
{
// Populate a list of proxies
List<string> proxies = new List<string>();
List<string> finishedProxies = new List<string>();
foreach (string proxy in proxiesList.Items)
{
proxies.Add(proxy);
}
Parallel.ForEach<string>(proxies, (i) =>
{
string checkResult;
checkResult = checkProxy(i);
finishedProxies.Add(checkResult);
// update ui
/*
status.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
status.Content = "hello" + checkResult;
}
)); */
// update ui finished
//Console.WriteLine("[{0}] F({1}) = {2}", Thread.CurrentThread.Name, i, CalculateFibonacciNumber(i));
});
}
मैं कोड है कि बाहर टिप्पणी की है Parallel.Foreach अंदर यूआई परिवर्तन करने के लिए उपयोग करने की कोशिश की है और बाद प्रारंभ बटन दबाया जाता है यह कार्यक्रम फ्रीज बनाता है। यह मेरे लिए पहले काम करता है लेकिन मैंने थ्रेड क्लास का इस्तेमाल किया।
मैं समानांतर के अंदर से यूआई कैसे अपडेट कर सकता हूं। Foreach और मैं समानांतर कैसे बना सकता हूं। Foreach काम करता है ताकि यह काम करते समय UI को फ्रीज न कर सके? अपने कोड के साथ
आप यूआई थ्रेड को इनवॉक अनुरोधों के साथ पंपलिंग कर रहे हैं, यह अब अपने नियमित कर्तव्यों को पूरा करने के लिए नहीं मिलता है। यूआई को पुनर्स्थापित करने की तरह। कम से कम पृष्ठभूमि को प्राथमिकता कम करें। –
@ dsp_099b "यह मेरे लिए पहले काम करता है लेकिन मैंने थ्रेड क्लास का उपयोग किया" के तहत आपका क्या मतलब है? – Fulproof