में प्रक्रिया, जबकि समय लेने वाली पाइथन लिपि के निष्पादन के दौरान, मैं पृष्ठभूमि कार्यकर्ता के साथ प्रगति पट्टी प्रदर्शित करने के लिए आईयू का प्रबंधन करता हूं।पृष्ठभूमि कार्यकर्ता त्रुटि
मैंने पृष्ठभूमि कार्यकर्ता को सफलतापूर्वक उपयोग किया है जब मुझे ईवेंट OutputDataReceived
की आवश्यकता नहीं है, लेकिन जिस स्क्रिप्ट का मैं उपयोग कर रहा हूं, वह कुछ प्रगति मानों को प्रिंट करता है जैसे कि "" 10 "," 80 ", ..), इसलिए मुझे घटना OutputDataReceived
सुनें।
मुझे यह त्रुटि मिलती है: This operation has already had OperationCompleted called on it and further calls are illegal.
इस लाइन में progress.bw.ReportProgress(v);
।
मैंने 2 पृष्ठभूमि कार्यकर्ता उदाहरणों, एक निष्पादन और अन्य सुनवाई का उपयोग करने की कोशिश की, यह कोई त्रुटि नहीं देता है, लेकिन ऐसा लगता है कि ईवेंट 'आउटपुटडेटा रिसीव' नहीं है, इसलिए मुझे प्रगति पट्टी में कोई प्रगति दिखाई नहीं दे रही है।
private void execute_script()
{
progress.bw.DoWork += new DoWorkEventHandler(//progress.bw is reference to the background worker instance
delegate(object o, DoWorkEventArgs args)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "python.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.Arguments = @".\scripts\script1.py " + file_path + " " + txtscale.Text;
//proc.StartInfo.CreateNoWindow = true;
//proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
proc.StartInfo.RedirectStandardOutput = true;
//proc.EnableRaisingEvents = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardError = true;
proc.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_OutputDataReceived);
proc.Start();
proc.BeginOutputReadLine();
//proc.WaitForExit();
//proc.Close();
});
progress.bw.RunWorkerAsync();
}
///the function called in the event OutputDataReceived
void proc_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
{
//throw new NotImplementedException();
if (e.Data != null)
{
int v = Convert.ToInt32(e.Data.ToString());
MessageBox.Show(v.ToString());
// report(v);
progress.bw.ReportProgress(v);
}
else
MessageBox.Show("null received");
}
आपको पता है कि सी # 4 पाइथन को थोड़ा और सीधे समर्थन करता है? –
आयरन पायथन के लिए मेरा प्रतिरोध यह है कि, मैं "आर्कपी" का उपयोग कर रहा हूं इसलिए आयरन पायथन के लिए बाध्यकारी आर्कपी काफी आसान नहीं है। – geogeek