Один из шаблонов, используемых с асинхронными делегатами, также является шаблоном обратного вызова, где начальный поток (тот, который называется BeginInvoke) T1 продолжается, не дожидаясь или проверяя, завершен ли порожденный поток T2. Вместо этого, когда T2 завершен, T2 вызывает метод обратного вызова, который обрабатывает результаты, вызывает EndInvoke и информирует T1 о завершении задачи.Когда асинхронные делегаты используют шаблон обратного вызова?
a) Если метод обратного вызова должен сообщать T1, когда задача завершена, то почему этот метод обратного вызова не вызван внутри T1, а не T2?
2) Есть ли стандартный шаблон, как метод обратного вызова должен информировать T1 о завершении T2?
3) Должен ли использоваться обратный вызов, даже если T1 должен получить возвращаемое значение асинхронно называемого метода?
Thanx
Зачем T1 давать дерьмо о том, что происходит в T2? Нити - это не что иное, как контексты исполнения; Для T1 не имеет значения, что происходит в T2. Важно, что после того, как приложение вошло, и только до тех пор, пока оно не войдет в состояние X, которое Y не произойдет. Почему Y должен выполняться T1 (кроме исключения пользовательского интерфейса)? – Will