На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> EventHandling , Windows Forms и Class Library
    Не получается словить события в приложении Windows Forms с подключенной .NET библиотекой.
    Использую .Net CF SP2, VS2005 SP1. Устройство HTC HD2 Windows Mobile 6.5
    Далее приведены участки кода. Запустив тоже приложение на десктопе все работает, но на кпк не срабатывает событие.
    Пробовал все возможные вариации с делегатами и событиями. Скачал исходники openNetСF и посмотрел как там релизована работа с событиями и все повторил, но не работает на КПК всеравно.

    Form1.cs
    ExpandedWrap disabled
      public partial class Form1 : Form
      {
      //Всяко разно опущено
      Listener listener = null;
      public Form1()
      {
          listener.ConnectNotification += new EventHandler(listener_conEvent);
                  //Dcon = new DConnect(listener_conEvent);
                  //listener.conEvent += Dcon;
                  //listener.conEvent += new EventHandler(listener_conEvent);
       
      }
              void listener_conEvent(Object sender, EventArgs a)
              {
                  textBox1.Text = "User connected to local server " + DateTime.Now.ToString();
              }
      }

    Class1.cs
    [CODE=C#]

    public delegate void DMessage(String message);
    public delegate void DConnect(Object sender, EventArgs e);

    public class Listener : IDisposable
    {

    public event System.EventHandler ConnectNotification;

    TcpListener localServer = null;
    TcpClient client = null;
    Byte[] bytes = new Byte[256];
    String data = null;
    Thread t = null;
    Boolean loop = true;
    Int32 listenPort = 11001;
    public event DMessage msgEvent; // И так пробовал
    public event DConnect conEvent;
    public DConnect disconEvent;
    protected virtual void OnConnect(System.EventArgs e) // Пример брал из openNETCF.Net - AdapterStatusMonitor.cs
    {
    if (ConnectNotification != null)
    {
    ConnectNotification(this, e);
    }
    }
    private void startServer()
    {
    localServer = new TcpListener(listenPort);
    localServer.Start();
    while (loop)
    {
    try
    {
    client = localServer.AcceptTcpClient();

    //conEvent(this,new EventArgs());
    //conEvent.Invoke(this, new EventArgs());
    OnConnect(new EventArgs());// так же как в openNETCF в AdapterStatusMonitor.cs
    data = null;
    }
    catch(Exception)
    {
    Debug.WriteLine("catch: client = localServer.AcceptTcpClient();");
    }
    NetworkStream stream = client.GetStream();
    Int32 i;
    try
    {
    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
    {
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0132 ]   [ 16 queries used ]   [ Generated: 18.04.24, 17:05 GMT ]