1.
비동기적으로 진행되는 프로세서 처리 방식에서 빠른 작업전환으로 사용자단에서 비동기방식(병렬적인 처리방식)으로 구현할 수 있습니다.
2.
C#에서 제공하는 비동기는 기본적으로 System.Threading의 Thread 클래스와 Task 클래스를 주로 사용합니다.
Task는 내부적으로 Thread 클래스로 구현되며, 다음과 같이 비동기 코드를 작성할 수 있습니다.
#define Args
using System.Threading;
using System.Threading.Tasks;
namespace REVIEW_CSHARP_BASIC
{
public partial class AsyncExample : Form
{
public AsyncExample()
{
InitializeComponent();
string str = "hello, world!";
Console.WriteLine(str.Substring(7));
Console.WriteLine(str.Substring(7, 6));
#if Async
StartWriteLineAsync();
#endif
#if Ordinary
StartWriteLineOrdinaryTask();
#endif
#if Args
StartWriteLineWitheArgs();
#endif
Console.WriteLine("[Log] Done to AsyncTask");
}
private async void StartWriteLineAsync()
{
for (int idx = 0; idx < 10; idx++)
{
Console.WriteLine("Hello, World!");
await Task.Delay(100);
}
}
private void StartWriteLineOrdinaryTask()
{
int[] retArr = new int[10];
Action action = () =>
{
foreach (int i in retArr)
{
Console.WriteLine("Ordinary Task!");
Thread.Sleep(100);
}
};
Task task = new Task(action);
task.Start();
task.Wait();
}
private void StartWriteLineWitheArgs()
{
Action action = () =>
{
for (int idx = 0; idx < 10; idx++)
{
WriteLineWithArgs("New Message");
Thread.Sleep(100);
}
};
Task task = new Task(action);
task.Start();
task.Wait();
void WriteLineWithArgs(string msg)
{
Console.WriteLine(msg);
}
// Another way
Task.Run(() =>
{
for (int idx = 0; idx < 10; idx++)
{
WriteLineWithArgs("Direct Input args");
Thread.Sleep(100);
}
});
}
}
}
Task 클래스에서 제공하는 .Run(Action) 메서드를 이용하여 손쉽게 비동기를 만듦과 동시에 시작 할 수 있다.
Action 인스턴스는 다음과 같이 람다형식으로 작성 가능하며, 람다 자체를 Run(() => Do())로 넣을 수 있다.
Action action = () =>
{
for (int idx = 0; idx < 10; idx++)
{
WriteLineWithArgs("New Message");
Thread.Sleep(100);
}
};
ㅈ
'CODING > C#' 카테고리의 다른 글
C# .net core6.0 실행파일(exe)내 dll 파일 포함 배포 방법 (0) | 2022.11.17 |
---|---|
C# XingAPI DevCenter의 C++ header 코드를 C# 코드로 변환하는 프로그램 (0) | 2022.11.17 |
C# Indexer를 이용해 class 내 다수의 배열 객체에 접근하는 방법 (0) | 2022.11.17 |
C# 구문분석(Parsing) (0) | 2022.09.21 |
C# 직렬화(Serialization) (1) | 2022.09.21 |
댓글