После просмотра ответов Майка и Дерека я решил использовать простой таймер, чтобы определить, когда CameraCaptureTask
возвращается быстрее, чем ожидалось.Это можно сделать, добавив следующее прямо перед вызовом для запуска задачи захвата:
State["CameraCaptureStart"] = DateTime.Now;//Save start time to detect fast cancel from zune software
Затем, когда захват завершится, вы сможете определить, вернулся ли он слишком быстро:
//Detect if task returned too fast
if (State.ContainsKey("CameraCaptureStart"))
{
DateTime dtStart = (DateTime)State["CameraCaptureStart"];
TimeSpan ts = DateTime.Now - dtStart;
if (ts < TimeSpan.FromSeconds(3))
{
MessageBox.Show("Error: Camera does not work while phone is connected to the Zune software.");
}
}
Inмои тесты были самыми быстрыми, и я смог загрузить камеру, сделать снимок и нажать кнопку подтверждения примерно через 5-6 секунд, в то время как программное обеспечение Zune автоматически отменялось и возвращалось примерно через 2,5 секунды.
Этот подходпростой и хорошо подходит для моей ситуации, однако вы должны знать, что сообщение об ошибке также будет отображаться, если пользователь нажмет кнопку «Назад» до истечения 3-секундного тайм-аута.