基於介面和佇列的執行緒操作UI方式

2021-06-16 11:11:29 字數 2393 閱讀 5999

在實際開發應用中,非ui執行緒操作ui是普遍存在的,在.net下一般是通過control.invoke的方法來進行操作,但到處都是control.invoke**維護可是一件麻煩的事情。以下通過介面和佇列來規範非ui執行緒操ui的實現。

既然要規範處理那介面是個不錯的選擇,以下定義乙個簡單的執行介面

publicinte***ceiinvokeitem

以下是擴充套件乙個簡單的操作類封裝

classcontrolinvoke: iinvokeitem

privatecontrol mcontrol;

privatedata mdata;

privateactionmaction;

publicvoidexecute()

}

規則定好了,那接下來要做的事情就是寫乙個簡單的佇列處理。

publicclassdispatch

publicvoidadd(control control, data data, actionaction)

privatequeuemqueues =newqueue();

publicstaticdispatch instance

publicvoidadd(iinvokeitem item)

}

publicvoidexecite()

}

}

}

乙個簡單的呼叫規則就完成,接下來就是如果在winform下面用了;首先可以在介面定義乙個timer,可以指定時間內執行dispatch的工作。

privatevoidtimer1_tick(objectsender, eventargs e)

privatevoidcmdtest_click(objectsender, eventargs e)

privatevoidontest(objectstate)

);

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...