關於非同步方法呼叫

2021-12-29 22:39:04 字數 1411 閱讀 9102

在我們的程式中,很多時候會有一些耗時較長的運算,我們為了保證使用者體驗,讓使用者介面能得到及時的響應。我們一般會採用多執行緒操作,讓耗時操作在

後台完成,比如我們在上傳檔案或其他一些需求要在介面顯示進度條的例子。在 .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是同步執行的,所以客戶端需要等待服...