|
Коли ми подаємо заявку на форму, іноді потрібно отримати інформацію про поточну форму або викликати керування іншими формами. Тут я пропоную два способи досягти цього.
Коли потрібно викликати керування з інших форм у формі, ми можемо використовувати контролі. CheckForIllegaCrossThreadCalls=false; Наприклад: Button.CheckForIllegalCrossThreadCalls=false; Звісно, ми також можемо зробити всю форму крос-нитковою Form.CheckForIllegalCrossThreadCalls=false; Це дозволяє нам отримувати доступ до керувань або властивостей цієї форми в інших формах. Це може бути не найбезпечніший спосіб, і іноді налагодження дає помилку.
Тут я представлю ще один метод, до якого можна отримати доступ у різних потоках. Invoke переходить у потік форми, щоб виконати функцію на делегаті
Спочатку нам потрібно оголосити комісію. public delegate void DelSetTime (object str); Потім нам потрібно лише підготувати функцію, яку потрібно виконати, публічний void setTime(object str); Тепер ми можемо помістити делегата на потік форми для виконання Delegate d=новий DelsetTime(setTime); саме так. Invoke(d,Datetime.Now.ToString()); Таким чином ми можемо досягти крос-потокового доступу.
Кожна форма має нитку для форми, яка головним чином відповідає за завершення креслення форми та керування формою Цю нитку ми називаємо формною ниткою або основною ниткою. Часто потрібно додати потоки до форми для обробки даних, а потім ми можемо встановити ці новостворені потоки як фонові потоки, коли форма закрита Нитка теж закінчиться. ThreadStart ths=новий ThreadStart(Demo); Thread th= нова Thread(ths); th. Start(); th. IsBackground=true;
Оригінал: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|