मैं सी # के लिए नया हूं, लेकिन मैंने बहुत सारे जावा किए हैं। यहां मेरी समस्या है: मैं एक थ्रेड से "SaveFileDialog" खोलने की कोशिश कर रहा हूं जो यूआई थ्रेड नहीं है।सी #: अन्य थ्रेड से यूआई थ्रेड पर संवाद दिखाएं
यह वास्तव में क्या मैं करने की कोशिश है:
public partial class Form1: Form
{
public string AskSaveFile()
{
var sfd = new SaveFileDialog();
sfd.Filter = "Fichiers txt (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";
sfd.FilterIndex = 1;
sfd.RestoreDirectory = true;
DialogResult result = (DialogResult) Invoke(new Action(() => sfd.ShowDialog(this)));
if(result == DialogResult.OK)
{
return sfd.FileName;
}
return null;
}
}
इस विधि हमेशा एक धागा एक है जो फार्म का मालिक से अलग से बुलाया जाएगा। समस्या यह है कि जब मैं इस कोड को निष्पादित करता हूं, तो "फॉर्म 1" फ्रीज और "SaveFileDialog" दिखाई नहीं देता है।
क्या आपके पास एक स्वतंत्र धागे से संवाद दिखाने में मेरी मदद करने के लिए कुछ सुराग है?
काम नहीं कर रहा: "AskSaveFile" को एक स्ट्रिंग वापस करने की आवश्यकता है। और यदि मैं "एंडइवोक" के साथ परिणाम की प्रतीक्षा करता हूं तो मुझे एक ही समस्या ("फॉर्म 1" ठंड लगती है)। – Moinonime
नए कोड का पहला भाग संवाद को मुख्य धागे में निष्पादित करता है ... इसलिए यह काम कर सकता है .... ओह, हाँ, मुख्य धागा इसे निष्पादित करेगा .. लेकिन क्या आपका मतलब है कि आपका मुख्य धागा कुछ अलग कर रहा है और इसका उपयोग नहीं किया जा सका ? मेरा विश्वास करो, मैं अपने कोड में अलग-अलग धागे में इस कोड का उपयोग करता हूं और यह काम करता है ... इसलिए कुछ ऐसा होना चाहिए जो मुझे अभी समझ में नहीं आता ... – Marco
एक प्रश्न: आपके धागे थ्रेड या पृष्ठभूमिवर्कर्स हैं? – Marco