Реализация IAsyncResult явно

Вам необходимо определить отдельный стиль для вашей панели инструментов в папке «values», затем добавить в нее следующие элементы:

?android:selectableItemBackground
@color/ripple_material_dark

Примечание: - Как вы можете проверить эту ссылку [112 ]. ?android:selectableItemBackground только свойства, которые делают эту анимацию.

6
задан Community 23 May 2017 в 11:45
поделиться

2 ответа

  • По моему опыту, просто вызов EndInvoke или без ожидание или без быть призванным обратно сначала редко полезны
  • Просто обеспечение обратных вызовов иногда недостаточно, поскольку Ваши клиенты могли бы хотеть ожидать нескольких операций сразу (WaitAny, WaitAll)
  • Я никогда не опрашивал IsCompleted, фу действительно! Так, Вы могли сохранить реализацию IsCompleted, но это столь просто, что это, кажется, не стоит для потенциального ошеломления клиентов.

Так, разумная реализация для асинхронно вызываемого метода должна действительно обеспечить полностью реализованный IAsyncResult.

BTW, Вы часто не должны реализовывать IAsyncResult сами, просто возвратить то, что возвращается Делегатом. BeginInvoke. Посмотрите реализацию Системы. IO.Stream. BeginRead для примера.

2
ответ дан 17 December 2019 в 04:53
поделиться

Кажется, что у Вас есть несколько вопросов. Давайте обработаем их индивидуально

Создание WaitHandle лениво

Да это - самый корректный подход. Необходимо сделать, это ориентированным на многопотоковое исполнение способом, но ленивый является путем.

Прием, хотя избавляется от WaitHandle. WaitHandle является основой IDisposable и должен быть избавлен своевременно. Документация для IAsycResult не касается этого случая. Лучший способ сделать это находится в EndInvoke. Документация для BeginInvoke явно указывает, что для каждого BeginInvoke, должен быть соответствующий EndInvoke (или BeginRead/EndRead). Это - лучшее место, в котором можно избавиться от WaitHandle.

Как AsyncState должен быть реализован?

Если Вы смотрите на стандартный BCL API, которые возвращают IAsyncResult, большинство из них берет параметр состояния. Это обычно - значение, которое возвращено от AsyncState (см. Сокет API для примера). Это - хорошая практика для включения переменной состояния, введенной, поскольку объект для любого API BeginInvoke разрабатывает API, который возвращает IAsyncResult. Не необходимая но хорошая практика.

В отсутствие переменной состояния, возвращая пустой указатель приемлемо.

IsCompleted API

Это будет очень зависеть от реализации, которая создает IAsyncResult. Но да, необходимо реализовать его.

3
ответ дан 17 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: