nie można wykonać na zwolnionym obiekcie

0

Mam kod:

private void SetText(string txt)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new SetTextCallback(SetText), new object[] { txt });//i czasem się tu wykłada, że nie można 
               //wykonać na obiekcie na którym użyto disposing czy jakoś tak
            }
            else
            {
                this.Text = txt;
            }
        }

Czy taki kod załatwia sprawę? Czy tak się to robi?

 if (backgroundThread.IsAlive)
                    {
                        SetText("BackgroundThread: ourQueue.Count is " + ourQueue.Count.ToString());
                      
                    }
0

Czy taki kod załatwia sprawę? Czy tak się to robi?
To zależy gdzie i jak i skąd i co się wywołuje. Fakt że natrafiłeś na taki błąd może świadczyć o niewłaściwym projekcie aplikacji.

Możesz też uciszyć sam wyjątek, jeśli to ma jakiś sens w twoim przypadku...

private void SetText(string txt)
{
    if (this.IsDisposed) return;
    ...
}

albo

private void SetText(string txt)
{
   try
   {
      ...
   } 
   catch (ObjectDisposedException ex)
   {
   }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1