Jump to content

oro

Members
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von oro

  1. Sieht nach nem Deadlock aus. Eventuell liegts an dem Zusammenspiel von Invoke (der Threadwechsel von Thread X auf UI-Thread) und der Implementierung von Disconnect:

     

    Aus den C# Bindings IpConnection.cs

    /// <summary>
    	///  Disconnects the TCP/IP connection from the Brick Daemon or the
    	///  WIFI/Ethernet Extension.
    	/// </summary>
    	public void Disconnect()
    	{
                            /* Der Übersicht halber rausgelöscht*/
    		if (Thread.CurrentThread != localCallback.thread)
    		{
    			localCallback.thread.Join();
    		}
    	}
    

     

    Meine Theorie wäre:

    Durch den Callback sind wir im Moment des Aufrufs nicht auf dem UI-Thread. Das obere Snippet wartet auf die Beendigung dieses Threads. Gleichzeitig versuchen wir aber im Callback auf den UI-Thread zurückzuwechseln, was mMn nicht klappen kann, da dieser Thread durchs .Join() aus der Diconnect-Methode blockiert ist.

     

    Kann sein, dass meine Theorie Müll ist, mit einem BeginInvoke()-Call statt des Invoke()-Calls sollte es aber funktionieren.

     

    Mich würde noch interessieren, für was der Thread.Join() im Disconnect überhaupt drin ist.

     

    Grüße,

     

    oro

     

    edit: Hier findest ne Erklärung zum Unterschied von BeginInvoke/Invoke:

     

    https://stackoverflow.com/questions/229554/whats-the-difference-between-invoke-and-begininvoke

×
×
  • Neu erstellen...