在實際開發應用中,非ui執行緒操作ui是普遍存在的,在.net下一般是通過control.invoke的方法來進行操作,但到處都是control.invoke**維護可是一件麻煩的事情。以下通過介面和佇列來規範非ui執行緒操ui的實現。
既然要規範處理那介面是個不錯的選擇,以下定義乙個簡單的執行介面
public
inte***ce
iinvokeitem
以下是擴充套件乙個簡單的操作類封裝
class
controlinvoke: iinvokeitem
private
control mcontrol;
private
data mdata;
private
actionmaction;
public
void
execute()
}
規則定好了,那接下來要做的事情就是寫乙個簡單的佇列處理。
public
class
dispatch
public
void
add(control control, data data, actionaction)
private
queuemqueues =
new
queue();
public
static
dispatch instance
public
void
add(iinvokeitem item)
}
public
void
execite()
}
}
}
乙個簡單的呼叫規則就完成,接下來就是如果在winform下面用了;首先可以在介面定義乙個timer,可以指定時間內執行dispatch的工作。
private
void
timer1_tick(
object
sender, eventargs e)
private
void
cmdtest_click(
object
sender, eventargs e)
private
void
ontest(
object
state)
);
system.threading.thread.sleep(10);
}
}
這樣乙個不使用control.invoke來實現非ui執行緒操作ui的方法就完成了.至於靈活性來說那就看你如何發揮iinvokeitem了
基於介面和佇列的執行緒操作UI方式
在實際開發應用中,非ui執行緒操作ui是普遍存在的,在.net下一般是通過control.invoke的方法來進行操作,但到處都是control.invoke 維護可是一件麻煩的事情。以下通過介面和佇列來規範非ui執行緒操ui的實現。既然要規範處理那介面是個不錯的選擇,以下定義乙個簡單的執行介面 p...
基於介面和佇列的執行緒操作UI方式
在實際開發應用中,非ui執行緒操作ui是普遍存在的,在.net下一般是通過control.invoke的方法來進行操作,但到處都是control.invoke 維護可是一件麻煩的事情。以下通過介面和佇列來規範非ui執行緒操ui的實現。既然要規範處理那介面是個不錯的選擇,以下定義乙個簡單的執行介面 p...
定時執行緒 Timer 操作UI介面
需求 先彈出dialog,然後,隔一定時間,修改dialog的msg.如果只是dismiss dialog 並不需要透過handle runonuithread 如果開啟新的定時執行緒,不起作用.android的執行緒通訊透過handle來處理,這裡也一樣 public static void sh...