Как определить, что телефон подключён к Zune
В WindowsPhone 7 есть одна неприятная особенность (хотя, на самом деле и не одна), когда телефон подключён к компьютеру и запущен Zune, то мы не можем запустить PhotoChooserTask или CameraTask, и e.TaskResult == TaskResult.Cancel. При этом нет никакого чёткого метода, чтобы определить, что причина в Zune. В интернете есть пара решений, одно из них, предлагает подтягивать целую либу, где такая возможность есть, но нафига это делать, если мы можем сделать это сами, а способ всего один:
using Microsoft.Phone.Net.NetworkInformation;
//...
private void ImageFromGallery() // картинка из галереи
{
PhotoChooserTask pct = new PhotoChooserTask();
pct.Completed += new EventHandler(pct_Completed);
pct.Show();
}
//...
private void pct_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
// smth
}
else
{
if (e.TaskResult == TaskResult.Cancel && NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
MessageBox.Show("Please, Disconnect From Computer");
}
}
Проблема может возникнуть, если компьютер отключён от интернета в принципе, так же, если он подключён по специфическому соединению, вроде: NetworkInterfaceType.FastEthernetFx , но вы вполне можете добавить и данные условия, а полное отсутствие обрабатывать через
if (e.TaskResult)
{
// smth
}
Правильнее так:
http://blog.dereklakin.com/detect-zune/
if ((TaskResult.Cancel == e.TaskResult) &&
(e.Error is InvalidOperationException))
{
// Zune software connected.
}