nie można wykonać na zwolnionym obiekcie

2012-07-23 12:47
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());

                    }

"Wszystko co może być wynalezione, zostało wynalezione"
Charless H. Duell - komisarz urzędu patentowego U.S., 1899
edytowany 1x, ostatnio: maszynaz, 2012-07-23 12:47

Pozostało 580 znaków

2012-07-23 14:30
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)
   {
   }
}

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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