在我們的程式中,很多時候會有一些耗時較長的運算,我們為了保證使用者體驗,讓使用者介面能得到及時的響應。我們一般會採用多執行緒操作,讓耗時操作在
後台完成,比如我們在上傳檔案或其他一些需求要在介面顯示進度條的例子。在 .net2.0中為我們供了乙個backgroundworker類可以完成類似的需求,具體
使用我們可以參考msdn。本文要說的我們自己來完成這樣乙個功能,並封裝在通用的基類當中。
1.我們封裝的基類如下:
public abstract class myasyncbaseclass
public int intparameter
public object callerstateobject
public system.windows.threading.dispatcher callingdispatcher
}//當執行緒執行完成後被激發的事件
public event eventhandler mymethodcomplete;
protected void firemymethodcompleteevent(int result, object state)
}//業務邏輯程式
public abstract int mymethod(string stringparameter, int intparameter);
// 非同步呼叫的方法
public void mymethodasync(string stringparameer, int intparameter, object state)
;
//建立執行緒
system.threading.threadpool.queueuserworkitem(mymethodthreaded, parameters);
}// 執行緒入口點
private void mymethodthreaded(object p)
}2.事件引數如下:
public class myasynceventargs : eventargs
/// 執行緒操作完的結果
///
public int intresult
public myasynceventargs(int result, object state)
}3.我們具體要實現的類如下:
public class myclass : myasyncbaseclass
}4.下面我來做下測試,如下:
public partial class form1 : form
{protected myasyncbaseclass class1;
public form1()
{initializecomponent();
class1 = new myclass();
C 非同步方法呼叫
using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...
java 呼叫非同步方法
某些時候我們需要執行乙個方法立即返回乙個處理結果,但仍需要另乙個方法去實現某些功能 如呼叫儲存過程 實現非同步處理。下面我們採用新開乙個執行緒的方式處理 手動執行 public void dojob cachedthreadpool.shutdown catch exception e jsonbe...
php 非同步呼叫方法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!php 非同步呼叫方法 客戶端與伺服器端是通過http協議進行連線通訊,客戶端發起請求,伺服器端接收到請求後執行處理,並返回處理結果。有時伺服器需要執行很耗時的操作,這個操作的結果並不需要返回給客戶端。但因為php是同步執行的,所以客戶端需要等待服...