Winform之UI後台執行緒

2022-02-22 21:08:26 字數 2047 閱讀 8087

多執行緒,乙個古老的話題,今天我來聊下最基本的執行緒,ui執行緒和後台執行緒。

在後台執行緒中直接操作ui控制項會出現異常(執行緒間操作無效:從不是建立控制項「xx」的執行緒訪問它)。怎麼解決這個問題那?關鍵點在**和invokerequired屬性,winform的ui(視窗)**如下:

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.text;

using

system.windows.forms;

using

landpylibrary;

using

landpycommon;

namespace

landpywindowsform

private

delegate

void

controldelegate(

string

time);

private

workthread wtobj;

controldelegate cdobj;

private

void

settime(

string

time)

public

void

showtime(

string

time)

else

}private

void

btnstart_click(

object

sender, eventargs e)

private

void

btnend_click(

object

sender, eventargs e)

}private

void

mainform_formclosing(

object

sender, formclosingeventargs e)}}

}為了能在後台執行緒中操作ui執行緒,我們的mainform繼承了公共介面iformworkthread,介面定義如下:

using system;

using system.collections.generic;

using system.text;

namespace landpycommon

}該介面放在乙個獨立的dll中,ui執行緒和後台執行緒也均處於不同的程式集中,它們均引用了該介面的dll。

後台執行緒類如下:

using

system;

using

system.collections.generic;

using

system.text;

using

system.threading;

using

landpycommon;

namespace

landpylibrary

public

void

deal()

}public

void

startshowtime()

public

void

endshowtime()}}

其實報異常是因為多執行緒操作ui控制項是非安全的,ms提供了解決方案,關鍵**如下:

public mainform()

private delegate void controldelegate(string time);

controldelegate cdobj;

private void settime(string time)

public void showtime(string time)

else

}通過**和invokerequired屬性解決了這個問題。

WIN FORM 多執行緒更新UI 介面控制項

方法1,更新單個控制項 public delegate void controltextmethod control control,string text private void setcontroltext control control,string text else 需要更新控制項的te...

Winform 執行緒修改UI介面元素的值

之前在做winform應用的時候,使用多執行緒控制介面上控制項資訊,時常碰到invalidoperationexception這個異常!這個異常的出現多數情況是由於worker執行緒 子執行緒 修改主線程式控制件 或物件 的屬性而導致的非法操作。這是因為.net 2.0以後加強了安全機制,不允許在w...

C 後台執行緒操作,不影響UI

方法一 public string backgroundactions string uriarg private void button1 click object sender,eventargs e start backgroundworker元件使用說明 一 概述 backgroundwor...