현재 for 루프에서 비동기 호출을 만들기 위해 대리인을 사용하고 있습니다. 실행중인 문제는 무엇입니까? 비동기 호출이 완료된 시점을 어떻게 알 수 있습니까? 예를 들어대리자와의 비동기 호출
는 :
public delegate string GetMergeSectionCaller(string something1, out int threadId);
public Dataset GetDataset (param1, param2) {
int threadId;
Dataset ds = new Dataset;
using (myConnection) {
myConnection.StartConnection();
GetMergeSectionCaller caller = new GetMergeSectionCaller(GetMergeSection);
foreach (var r in anObjectList) {
IAsyncResult result = caller.BeginInvoke(r.ToString(), out threadId, null, null);
}
//I want to do here is wait for the above every single foreach BeginInvoke to finish; then do the below job
ds = GetFinalData();
}
//do more thing to ds here;
return ds;
}
public void GetMergeSectionCaller(string something1, out int threadId) {
//doing superlong long job
//in my actual case, it's actually inserting data to db etc
Thread.Sleep(5000);
threadId = Thread.CurrentThread.ManagedThreadId;
}
그래서 다른 방법을 시도; 내 BeginInvoke 및 EndInvoke에 콜백을 전달하는 등의 작업을 수행 할 수 있지만 여전히 foreach를 완료하기 전에 나머지 코드를 중지하는 방법이 없습니다.
어쩌면 나는 거기에 뭔가 아주 간단하게 놓치고 있니? 누군가 제 상태를 기반으로 완전한 작동 샘플을 보여 주시겠습니까?
이것이 어떤 프로그래밍 언어인지 언급하면 도움이됩니다. – JJJ
제목 편집 : C# – nerrad