Microsoft 웹 API 2.2 클라이언트를 사용하여 API 끝점에서 데이터를 요청하고 있습니다. 데이터를 얻은 후에 x 개의 DoSomeWork를 실행합니다. DoSomeWork 함수를 실행하기 전에 데이터를 먼저로드해야합니다.다른 작업을 실행하기 전에 작업을 완료하는 방법
아래 코드를 기반으로 다음과 같은 결과가 예상됩니다.
은 "GetSomething 시작"
을 을 "작업 # 1 시작" "작업 # 2 시작" "GetSomething으로 완료"그러나 나는 다음 getthe 작업 # 시작 " 을"GetSomething 시작 " 1 " 는"GetSomething으로 완료 " "나는믿는다 "
static void Main()
{
try
{
Task getSomethingTask = Task.Factory.StartNew(()=>GetSomething());
getSomethingTask.Wait();
Task[] tasks = new Task[2] {
Task.Facotry.StartNew(()=>DoSomeWork(1)),
Task.Facotry.StartNew(()=>DoSomeWork(2))
};
Task.WaitAll(tasks);
}
catch(Exception ex)
{
throw ex;
}
}
static async Task GetSomething()
{
Console.WriteLine("Starting GetSomething");
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(SOME_URL);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/v1/somethings");
somethingList = await response.Content.ReadAsAsync<SomeObject>();
}
catch (Exception)
{
throw;
}
Console.WriteLine("Done with GetSomething");
}
static async Task DoSomeWork(int workNumber)
{
Console.Writeline("Start work#" + workNumber);
}