dipps
Goto Top

C Sharp Programm stürzt ab mit System.InvalidOperationException wurde nicht behandelt.

C# Programm stürzt ab mit System.InvalidOperationException wurde nicht behandelt.

System.InvalidOperationException wurde nicht behandelt.
  Message="Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Z8 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."  
  Source="System.Windows.Forms"  
  StackTrace:
       bei System.Windows.Forms.Control.get_Handle()
       bei System.Windows.Forms.Control.set_WindowText(String value)
       bei System.Windows.Forms.Control.set_Text(String value)
       bei System.Windows.Forms.Label.set_Text(String value)
       bei Superfinale.Anzeige.setcomdaten(String buffer) in C:\Users\Mirko\Documents\Visual Studio 2008\Projects\Superfinale\Superfinale\Anzeige.cs:Zeile 1074.
       bei Superfinale.Anzeige.serialPort1_DataReceived(Object sender, SerialDataReceivedEventArgs e) in C:\UsersNutzer\Documents\Visual Studio 2008\Projects\Superfinale\Superfinale\Anzeige.cs:Zeile 1090.
       bei System.IO.Ports.SerialPort.CatchReceivedEvents(Object src, SerialDataReceivedEventArgs e)
       bei System.IO.Ports.SerialStream.EventLoopRunner.CallReceiveEvents(Object state)
       bei System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
       bei System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)
  InnerException: 

ICh lese einen Comport aus und dann kommt der Fehler wenn ich was in ein Label schreiben will.
Wenn ich es in der Messagebox ausgebe geht es.
Code Anbeii

private string buffer;
        
        public void setcomdaten(string buffer)
        {
                if (buffer != "")  
                {

                    //richTextBox1.Text += buffer + "\n"; 
                    //MessageBox.Show(buffer);

                    //MessageBox.Show("-" + buffer.Substring(14,5) + "- "+buffer); 
                    if (buffer.Substring(3, 2) == "2S")  
                        MessageBox.Show("Start Lauf-WK:" + buffer.Substring(11, 2) + "Lauf:" + buffer.Substring(13, 2) + "-\n");  
                    //if (buffer.Substring(20, 2) == "2S") 
                    //    MessageBox.Show("Start Lauf-WK:" + buffer.Substring(28, 2) + "Lauf:" + buffer.Substring(30, 2) + "-\n"); 
                    if (buffer.Substring(4, 4) == "1 1")  
                        MessageBox.Show("Bahn1 00:" + buffer.Substring(14, 5) + "\n");  
                    if (buffer.Substring(4, 4) == "2 1")  
                        MessageBox.Show("Bahn2 00:" + buffer.Substring(14, 5) + "\n");  
                    if (buffer.Substring(4, 4) == "3 1")  
                        MessageBox.Show("Bahn3 00:" + buffer.Substring(14, 5) + "\n");  
                    if (buffer.Substring(4, 4) == "4 1")  
                        MessageBox.Show("Bahn4 00:" + buffer.Substring(14, 5) + "\n");  
                    if (buffer.Substring(4, 4) == "5 1")  
                        MessageBox.Show("Bahn5 00:" + buffer.Substring(14, 5) + "\n");  
                    if (buffer.Substring(4, 4) == "6 1")  
                        MessageBox.Show("Bahn6 00:" + buffer.Substring(14, 5) + "\n");  
                    if (buffer.Substring(4, 4) == "7 1")  
                        MessageBox.Show("Bahn7 00:" + buffer.Substring(14, 5) + "\n");  

                    if (buffer.Substring(4, 4) == "8 1")  
                    {

                        Z8.Text = "00:" + buffer.Substring(14, 5);  
                        //MessageBox.Show("Bahn8 00:" + buffer.Substring(14, 5) + "\n"); 
                    }
                }


            //}

        }
       
       

        public void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            buffer = serialPort1.ReadTo("");  
            
            setcomdaten(buffer);
                
            
        }

Content-ID: 179331

Url: https://administrator.de/contentid/179331

Ausgedruckt am: 05.11.2024 um 14:11 Uhr

dog
dog 22.01.2012 um 14:37:52 Uhr
Goto Top
Was ist denn an der Meldung nicht eindeutig?

Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Z8 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

http://www.codeproject.com/Articles/52752/Updating-Your-Form-from-Anoth ...
http://dotnet-snippets.de/dns/control-aus-anderen-threads-aktualisieren ...
http://blogs.msdn.com/b/csharpfaq/archive/2004/03/17/91685.aspx
usw...