Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Hàm timer_tick không chạy khi chờ kết nối mới

  1. #1
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Mặc định Hàm timer_tick không chạy khi chờ kết nối mới

    Trước tiên xin lỗi anh Mod vì mới tham gia diễn đàn nên chưa biết quy định về tiêu đề.

    iện nay mình đang viết 1 chương trình 1 client - 1 server nhưng gập vấn đề sau đây chưa biết giải quyết như thế nào, hy vọng mọi người có thể góp ý:

    - Chương trình server của mình là 1 winform có 1 timer và 1 kết nối đến csdl. Khi bắt đầu, sv sẽ tạo một socket đợi kết nối từ client.

    - Khi client kết nối đến lần đầu, timer sẽ được enabled và hàm timer_tick bắt đầu thực thi. Đồng thời server sẽ trở về trạng thái đợi kết nối.

    - Khi có client yêu cầu kết nối đến server lần thứ 2 thì timer sẽ bị disabled lúc này timer_tick không thực thi nữa. Đồng thời server lại trở về trạng thái lắng nghe. Trở về giống bước ở trên.

    Vấn đề mình gặp phải là khi thực hiện đợi kết nối lần thứ 2 thì hàm timer_tick không thực thi. Mình đã thử sử dụng Socket không đồng bộ và thread nhưng vẫn không có tiến triển. Sv về trạng thái đợi kết nối nhưng hàm timer_tick không thực thi.

    --------------------------------------------------------------------------------------

    Ví dụ cụ thể như sau:

    - Một datetime server có 1 timer đếm theo 10 giây. Lúc đầu timer sẽ bị disable. Server chờ kết nối từ client.

    - Khi client yêu cầu kết nối đến sv, timer sẽ được enable, hàm timer_tick thực thi lấy thời gian hệ thống chép vào csdl. Đồng thời sv chờ kết nối mới từ client.

    - Client yêu cầu kết nối lần 2. lần này timer sẽ bị disable. Hàm timer_tick dừng thực thi. Sv lại chờ kết nối từ client.

    Vấn đề xảy ra là: khi client kết nối đến lần đầu, sv chờ kết nối mới đến, timer đã được enabled nhưng hàm timer_tick lại không thực thi. (code trong hàm timer_tick là chính xác).

    Hy vọng các bạn có thể chỉ cho mình hướng giải quyết.

  2. #2
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Bạn nói thế này rất khó. Có lẽ bạn up code hoặc project thì mọi người giúp đỡ được tốt hơn. Vì vấn đề bạn hỏi thì khó mà đoán được lỗi ở đâu mà timer ko start

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    4

    public Form1()
    {
    InitializeComponent();

    }

    private void getData()
    {
    IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
    UdpClient receiver = new UdpClient(2009);
    while (true)
    {
    byte[] data = new byte[1024];
    data = receiver.Receive(ref iep);
    string s = Encoding.ASCII.GetString(data);
    if (s.Equals("start"))
    timer1.Enabled = true;
    }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    DateTime t = DateTime.Now;
    textBox1.Text += t.ToString();
    }

    private void Form1_Shown(object sender, EventArgs e)
    {
    Thread thr = new Thread(new ThreadStart(getData));
    thr.Start();
    }
    Đây là code của mình nếu có gì không đúng mong bạn hướng dẫn dùm :(

    Lập trình mình cũng không khá lắm. Mong các bạn giúp đỡ @,@

  4. #4
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Mình đã tìm được nguyên nhân vì sao timer k chạy rồi. Cảm ơn các bạn.

    Do mình dùng timer của windowforms nên không chạy trong thread

Các đề tài tương tự

  1. MS SQL Lỗi SQL Server 2005 express chạy chậm khi chạy report?
    Gửi bởi dongtrien trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 26-03-2013, 09:12 PM
  2. Q-Smart S15 thiết kế chắc chắn chạy android giá rẻ
    Gửi bởi 16thang4 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-08-2012, 04:07 PM
  3. Trả lời: 4
    Bài viết cuối: 28-06-2012, 03:35 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn