invokeAsync에 대한 질문이 있고 cal 명령을 신뢰할 수있는 것으로 간주 할 수 있습니다.InvokeAsync 순서 안정성
예 :
//Get Dispatcher of UI Thread
private Dispatcher _dsp = Dispatcher.CurrentDispatcher;
//Method called from non-UI Thread
private void a() {
//Do Stuff
b();
_dsp.InvokeAsync(() => {
//Do Stuff in UI Thread
});
}
private void b() {
//Do stuff
_dsp.InvokeAsync(() => {
//Do stuff in UI Thread
});
}
내가 그것이 UI 스레드의 디스패처 처음에 넣어 이후 B의 InvokeAsync의 코드는 'InvokeAsync의 코드 이전에 실행된다는 것을 당연시하거나 이런 경우 어디에 가장 시간 b의 첫 번째 실행되지만 이상한 circustances 주위에 다른 방법, 또는 더 나쁜, 두 사이의 점프 수도 있습니다?
기본적으로, 내가이 문제에 관해 어떤 문제를 일으킬 수 있습니까? 아니면이 ok nad가 내가 말한 실행 순서를 신뢰할 수 있을까요? problema에 기회가 있다면, 그것을 잘하는 방법에 대한 아이디어가 있습니까?
filePath가 있는지는 모르지만 작업을 살펴 보겠습니다. 그 정렬은 a에서 호출의 코드를 b의 호출 끝까지 복사하는 것과 같습니다. – 537mfb
이 방법들에서 지역 변수를 사용할 수 있다는 것을 보여주고 있었지만 아마도 언급했을 것입니다. 아니요, 실제로는 ... 첫 번째 부분은 비동기 적으로 실행되며'TaskScheduler.FromCurrentSynchronizationContext()'옵션을 사용하면 두 번째 부분이 UI 스레드에서 실행됩니다. 이 옵션을 해제하더라도 다른 비동기 컨텍스트에서 실행되기 때문에 여전히 동일하지는 않지만 두 번째 부분은 처음 완료 될 때까지 기다릴뿐입니다. – Sheridan
문제가 해결되지 않은 일부 리팩토링을 끝내지 만 리팩토링 이전에 찾던 답변입니다. - 감사합니다. – 537mfb