Hola.
Estoy haciendo un programa para dispositivos Pocket PC Phone Edition que ejecuten Windows Mobile 5/6. Lo que hace el programa es ejecutar una serie de acciones cuando el movil recibe una llamada. Para saber cuando se produce este evento, uso un objeto SystemState.
El problema es que en este código el evento no se lanza:
no funciona
using System;
using Microsoft.WindowsMobile.Status;
using System.Threading;
namespace MiPrograma
{
class Program
{
private static SystemState _incomingCallWatcher;
static void Main(string[] args)
{
_incomingCallWatcher = new SystemState(SystemProperty.PhoneIncomingCall);
_incomingCallWatcher.Changed += new ChangeEventHandler(_incomingCall_Changed);
while (true) {
Thread.Sleep(500);
}
}
private static void _incomingCall_Changed(object sender, ChangeEventArgs args)
{
....
}
}
Mientras que en este si se lanza y funciona bien. Pero yo no necesito un formulario para la aplicación.
sí funciona
using System;
using Microsoft.WindowsMobile.Status;
using System.Threading;
using System.Windows.Forms;
namespace MiPrograma
{
class Form1: Form
{
private static SystemState _incomingCallWatcher;
public Form1()
{
_incomingCallWatcher = new SystemState(SystemProperty.PhoneIncomingCall);
_incomingCallWatcher.Changed += new ChangeEventHandler(_incomingCall_Changed);
}
private void _incomingCall_Changed(object sender, ChangeEventArgs args)
{
....
}
}
}
class Program
{
static void Main(string[] args)
{
Application.Run(new Form1());
}
}
}
¿A qué se debe que en uno ejecute _incomingCall_Changed al recibir una llamada y en otro no? ¿Tal vez es un problema de hilos o de miembros estáticos?