C#비동기 구조 기능 : 타당성 탐색
경우에 따라 비동기 연산이 생성자의 데이터를 채우는 데 사용될 수 있습니다. 다음 예를 고려하십시오. 이 예에서 생성자는 객체가 생성 될 때 데이터를 비동기 적으로 얻도록 설계되었습니다. 그러나 C#컴파일러는 오류를 생성하여 "Async"수정자가 생성자에서 사용할 수 없음을 지적합니다.
비동기 생성자를 사용하지 않는 이유
건설적 기능은 스레드의 보안을 보장하여 데이터 손상을 일으키지 않고 동시에 생성 할 수 있도록해야합니다. 그러나 비동기 운영은 경쟁 조건의 가능성을 도입하여 스레드 보안을 위험에 빠뜨릴 것입니다. 초기화 순서 : 생성자는 객체가 완전히 구성되기 전에 모든 필드가 초기화되도록해야합니다. 비동기 작업은 완료하는 데 불확실한 시간이 필요할 수 있지만 생성자는 명확한 초기화 순서를 설정해야합니다.
비정상적인 처리 :생성자는 물체가 실패하지 않도록 통제 된 방식으로 이상을 처리해야합니다. 생성자에서 비동기 작업을 허용하면 비정상적인 처리가 더욱 복잡해 질 수 있으며, 이는 일관된 객체가 초기화되도록하기가 더 어려워집니다.
<code class="language-c#">public class ViewModel { public ObservableCollection<tdata> Data { get; set; } // 异步构造函数(无效语法) async public ViewModel() { Data = await GetDataTask(); } }</code>
개발자는 클래스 인스턴스를 반환하기위한 비동기 정적 메소드를 만들 수 있습니다. 이 방법은 비동기 작동 처리 데이터 및 개인 생성자 기능을 갖춘 인스턴스형 객체로 채워질 수 있습니다.
"데이터"필드의 초기 값은 "null"으로 설정되어 액세스 중에로드됩니다.
위 내용은 Async 생성자는 C#에서 실현 가능하며 왜 또는 왜 그렇지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!