본문 바로가기
Programming

비동기 호출하기(델리게이트, 스레드 이용)

by Mizix 2011. 10. 20.
반응형
스레드를 이용한 비동기 멀티스레딩
TitleSearch titleSearch = new TitleSearch();
ImageSearch imageSearch = new ImageSearch();
SemanticSearch semanticSearch = new SemanticSearch();

Task[] threads = new Task[]
{
//타이틀 검색 결과
new Task(() => resultTitleSearchXmlData=titleSearch.Operation(keyword)),
//시맨틱 검색 결과
new Task(() => resultSemanticSearchXmlData=semanticSearch.General(catgory,keyword)),
//이미지 검색결과
new Task(() => resultImageSearchXmlData=imageSearch.Operation(keyword))
};
for (int i = 0; i < threads.Length; i++)
{
threads[i].Start();
}
Task.WaitAll(threads);
또는

델리게이트를 이용한 비동기 멀티스레딩
//비동기 엔진 호출을 위한 메소드 선언
public delegate XmlDocument SemanticDele(int? catgory, string keyword);
public delegate XmlDocument ImageDele(string keyword);
public delegate XmlDocument TitleDele(string keyword);

SemanticDele semanticDele = new SemanticDele(semanticSearch.General);
ImageDele imageDele = new ImageDele(imageSearch.Operation);
TitleDele titleDele = new TitleDele(titleSearch.Operation);

IAsyncResult semanticSearchResult = semanticDele.BeginInvoke(catgory, keyword, null, null);
IAsyncResult titleSearchResult = titleDele.BeginInvoke(keyword, null, null);
IAsyncResult imageSearchResult = imageDele.BeginInvoke(keyword, null, null);

//Do some other work on priamry thread..
resultTitleSearchXmlData = titleDele.EndInvoke(titleSearchResult);
resultImageSearchXmlData = imageDele.EndInvoke(imageSearchResult);
resultSemanticSearchXmlData = semanticDele.EndInvoke(semanticSearchResult);

반응형