using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.threading;
namespace asynccontrol
/*了解backgroundworker的使用
1)兩個屬性:
workerreportsprogress: 是否報告進度更新
workersupportscancellation: 是否支援非同步取消
2)三個事件:
dowork: 包含執行**或對執行**的呼叫.
progresschanged: 改變進度條.
runworkercompleted: 給出提示資訊,顯示是否被取消,執行成功還是失敗.
*/backgroundworker work = null;
asynceventhandle eventhandle = null;
int i;
private void btnstart_click(object sender, eventargs e)
//*******委託的非同步呼叫
eventhandle=new asynceventhandle(method);
iasyncresult result = eventhandle.begininvoke(new asynccallback(callbackmethod), eventhandle);
}private void method()
progressbar1.value = i;
i++;
thread.sleep(500);
}}));
}void callbackmethod(iasyncresult ar)
//}));
}void work_progresschanged(object sender, progresschangedeventargs e)
void work_runworkercompleted(object sender, runworkercompletedeventargs e)
void work_dowork(object sender, doworkeventargs e)
//}));
methodinvoker(() =>
////}
//));
while (i <= progressbar1.maximum)
if (work.cancellationpending)
thread.sleep(500);
work.reportprogress(i);
i++;}}
}}
java 呼叫非同步方法
某些時候我們需要執行乙個方法立即返回乙個處理結果,但仍需要另乙個方法去實現某些功能 如呼叫儲存過程 實現非同步處理。下面我們採用新開乙個執行緒的方式處理 手動執行 public void dojob cachedthreadpool.shutdown catch exception e jsonbe...
關於非同步方法呼叫
在我們的程式中,很多時候會有一些耗時較長的運算,我們為了保證使用者體驗,讓使用者介面能得到及時的響應。我們一般會採用多執行緒操作,讓耗時操作在 後台完成,比如我們在上傳檔案或其他一些需求要在介面顯示進度條的例子。在 net2.0中為我們供了乙個backgroundworker類可以完成類似的需求,具...
C 語言中的非同步方法呼叫
net框架基類庫 bcl 中有好幾種類都可以提供同步和非同步的方法呼叫。不過,因為同步方法呼叫會導致程式流程中途等待,所以採用同步方法的情 況下往往會導致程式執行的延遲,相比來說,在某些條件下選擇非同步方法呼叫就可能更好一些,例如,有的時候程式需要給多個web服務發出請求,這時就最好採 用非同步方法...