c# 기초구문 업데이트 완료
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,47 @@
|
||||
internal class Program
|
||||
{
|
||||
//비동기 Task 코드가 실행되는 메서드는 async 접두사 및 리턴형이 Task 이어야 함.
|
||||
private static async Task Main(string[] args)
|
||||
{
|
||||
var cls = new AClass();
|
||||
cls.ComplexCalc(3000); // 동기처리
|
||||
cls.ComplexCalc(2000); // 동기처리
|
||||
|
||||
await cls.ComplexCalcAsync(3000); // 비동기 처리
|
||||
|
||||
|
||||
var task1 = Task<int>.Run(() => cls.ComplexCalc(3000));
|
||||
var task2 = Task<int>.Run(() => cls.ComplexCalc(2000));
|
||||
Task<int>[] tasks = { task1, task2 };
|
||||
|
||||
//먼저완료되는 타스크를 먼저처리
|
||||
var anytask = Task.WhenAny(tasks);
|
||||
Task<int> finTask = await anytask;
|
||||
var result = await finTask;
|
||||
|
||||
//모두가 완료되기를 기다리는 타스크.
|
||||
Task alltask = Task.WhenAll(tasks);
|
||||
await alltask;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class AClass
|
||||
{
|
||||
|
||||
public int ComplexCalc(int complexity)
|
||||
{
|
||||
Thread.Sleep(complexity);
|
||||
return complexity;
|
||||
}
|
||||
|
||||
public async Task<int> ComplexCalcAsync(int complexity)
|
||||
{
|
||||
var task = Task.Run(() => ComplexCalc(complexity));
|
||||
// await 가 나오기 전까지 다른 동시작업 가능
|
||||
|
||||
var result = await task;
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user