|
Kiedy tworzymy formularz, czasem musimy uzyskać informacje o aktualnym formularzu lub wywołać kontrolki innych formularzy. Przedstawiam tutaj dwie metody, aby to osiągnąć.
Gdy musimy wywołać kontrolki z innych form w formie, możemy użyć kontroli. CheckForIllegaCrossThreadCalls=false; Na przykład: Button.CheckForIllegalCrossThreadCalls=false; Oczywiście możemy też uczynić całą formę wątkiem krzyżowym Form.CheckForIllegalCrossThreadCalls=false; Pozwala nam to uzyskać dostęp do kontrolek lub właściwości tej formy w innych formach. To może nie być najbezpieczniejsza metoda, a czasem debugowanie powoduje błąd.
Tutaj przedstawię kolejną metodę, do której można uzyskać dostęp w różnych wątkach. Invoke przeskakuje na wątek formularza, aby wykonać funkcję na delegacie
Najpierw musimy ogłosić komisję. delegate publiczny void DelSetTime(object str); Następnie musimy przygotować funkcję, którą trzeba wykonać, public void setTime(object str); Teraz możemy umieścić delegata na wątku formularza do wykonania Delegate d=new DelsetTime(setTime); Dokładnie tak. Invoke(d,Datetime.Now.ToString()); W ten sposób możemy uzyskać dostęp między wątkami.
Każdy formularz ma wątek formularza, który głównie odpowiada za ukończenie rysunku formularza i sterowanie formularzem Ten wątek nazywamy wątkiem formowym lub głównym wątkiem. Często musimy dodać wątki do formularza, aby przetwarzać dane, a następnie możemy ustawić te nowo utworzone wątki jako wątki tła, gdy formularz zostanie zamknięty Wątek też się zakończy. ThreadStart ths=nowy ThreadStart(Demo); Wątek th= nowy Wątek(ths); th. Start(); th. IsBackground=true;
Oryginał: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|