현재 C#으로 개발 된 응용 프로그램을 작성 중입니다. 작업 관련 질문이 있습니다. Tasks 및 Asynchronous Programming 주제에 대한 연구를 수행했습니다. 그러나 작업을하는 동안 나는 여전히 자신감이 부족합니다.C# 프로그래밍에서 새 스레드를 시작하는 작업 사용
이 응용 프로그램에는 ReadOrWriteDBTable이라는 메서드가 있습니다. 이 메소드는 SQL 테이블에서 매초마다 읽기 또는 삽입 조작을 수행합니다. 기본적으로이 메서드는 매초마다 호출됩니다. 현재이 메소드는 응용 프로그램의 GUI 스레드와 동일한 스레드에서 실행 중입니다. 처음에는 테이블에 데이터가 거의 없기 때문에 문제가되지 않지만 테이블에서 데이터 양이 증가하면 GUI에 많은 문제가 발생할 수 있습니다. 따라서 GUI 스레드와 다른 스레드에서 이러한 데이터베이스 작업을 수행하고 싶습니다.
이것은 매 초 ReadOrWriteDBTable 메서드를 새 스레드를 통해 호출해야한다는 것을 의미합니다. 이것은 멀티 스레딩을 가져오고 스레드 풀을 관리하는 것이 어렵다고 생각합니다. 내가 TASKS에서 이해 한 것은 다중 스레딩의 모든 복잡한 작업이 TASK에 의해 완전히 처리된다는 것입니다. 그래서 다음과 같은 방법으로 Tasks를 사용한 여러 가지 스레딩 문제를 처리했습니다.
public int PollingTrigger
{
get
{
return this.pollingTrigger;
}
set
{
this.pollingTrigger = value;
Task.Factory.StartNew(ReadOrWriteDBTable);
}
}
Public void ReadOrWriteDBTable()
{
// Database select and update….
}
은 PollingTrigger 속성은 호출 될 때마다 두 번째와 차례로 새로운 작업 방법 ReadOrWriteDBTable() 생성됩니다. 작업에서 결과를 반환 할 필요가 없으므로 작업에 Async 및 await 키워드를 사용하지 않으며 비동기 작업을 수행하지 않습니다. 내가 알고 싶습니다,이 작업의 사용은 정확하고 예외로부터 안전합니까? PollingTrigger 속성 (매초이 응용 프로그램에서)에 새 값이 설정 될 때마다 새 스레드를 시작하는 데 도움이됩니까?
이러한 자세한 설명은 죄송합니다. 나는 단지 내 질문을 분명히하고 싶었다. 나는 그것이 이 분명하기를 희망한다. 앞으로 귀하의 도움말이나 답변을 기대!
아직 [this] (http://blog.stephencleary.com/2012/02/async-and-await.html) 문서를 보셨습니까? 도움이 될 수도 –
Task.Factory.StartNew에 대한 안전한 속기 Task.Run()를 사용하고 여러 읽기의 incase, 나는 당신이 DB에서 플래그를 일종의 알고 있지만 아직 업데이 트되지 않았는지 확인해야한다고 생각 언제 다른 스레드가 – brykneval