Hiển thị các bài đăng có nhãn Programming. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Programming. Hiển thị tất cả bài đăng

Thứ Ba, 31 tháng 10, 2023

Truyền biến giữa hai Form trong ứng dụng Windows Forms

Để truyền biến giữa hai form trong ứng dụng Windows Forms, bạn có một số cách khác nhau, tùy thuộc vào mức độ sự liên quan giữa các form và cách bạn muốn chia sẻ dữ liệu. Dưới đây là một số cách phổ biến để truyền biến giữa hai form:

  1. 1. Sử dụng thuộc tính hoặc phương thức: Bạn có thể tạo các thuộc tính hoặc phương thức public trong form nguồn để cung cấp dữ liệu cho form đích. Ví dụ:

    Trong Form nguồn:

    csharp
    public string DataToPass { get; set; } private void OpenSecondForm() { SecondForm secondForm = new SecondForm(); secondForm.DataFromFirstForm = this.DataToPass; secondForm.Show(); }

    Trong Form đích:

    csharp
    public string DataFromFirstForm { get; set; }

  2. 2. Sử dụng constructor: Trong constructor của form đích, bạn có thể truyền dữ liệu khi tạo form đó. Ví dụ:

    Trong Form đích:

    csharp
    public SecondForm(string data) { InitializeComponent(); // Sử dụng dữ liệu ở đây }

    Trong Form nguồn:

    csharp
    private void OpenSecondForm() { string dataToPass = "Dữ liệu bạn muốn truyền"; SecondForm secondForm = new SecondForm(dataToPass); secondForm.Show(); }

  3. 3. Sử dụng sự kiện và delegat (Event and Delegate): Bạn có thể tạo sự kiện và delegat trong form nguồn và đăng ký sự kiện đó từ form đích. Khi dữ liệu thay đổi trong form nguồn, form đích sẽ được thông báo thông qua sự kiện.

    Trong Form nguồn:

    csharp
    public event Action<string> DataChanged; private void SomeAction() { string newData = "Dữ liệu mới"; DataChanged?.Invoke(newData); }

    Trong Form đích:

    csharp
    private void SubscribeToDataChangedEvent() { FirstForm firstForm = new FirstForm(); firstForm.DataChanged += OnDataChanged; firstForm.Show(); } private void OnDataChanged(string newData) { // Xử lý dữ liệu ở đây }

Cách bạn chọn phụ thuộc vào cấu trúc ứng dụng của bạn và cách bạn muốn truyền dữ liệu.

Thứ Sáu, 17 tháng 3, 2023

 

Cách tạo một Windows Service Applications đơn giản trong Visual Studio với CSharp

 Windows Service Applications  hay là Microsoft Windows services  ( còn gọi là các NT services)  cho phép chúng ta viết các ứng dụng chạy ngầm bên trong các phiên làm việc của Windows mà không cần có giao diện người sử dụng để tương tác với chúng.

      Mục đích của chúng để thực hiện các công việc theo một quy trình tuần hoàn nào đó với các tham số, cấu hình được định nghĩa trước mà người sử dụng không cần phải can thiệp thông qua giao diện, chúng được thiết lập các tham số để chạy.  Các services này có thể được chạy một cách tự động chạy khi máy tính khởi động, có thể tạm dừng và khởi động lại services.

     Dưới đây xin trình bày các tạo ra một Window Services đơn giản nhất sử dụng Visual Studio 2012.

Windows Service Applications hay là Microsoft Windows services ( còn gọi là các NT services) cho phép chúng ta viết các ứng dụng chạy ngầm bên

 

       Đặt tên cho Project Services rồi  nhấn Ok, Project Windows Service sẽ có cấu trúc như sau.

Tao Project Windows Services Trong Visual Studio 2012 -01

      File chính mặc định của Project là Services1.cs,  trong ví dụ được đổi thành tên DemoServices.cs theo tên Project.

      Các ứng dụng Windows Services do người dùng viết đều được kế thừa từ lớp ServiceBase  trong namspace có tên  System.ServiceProcess.

1.  Ghi lại hoạt động của Services bằng EventLog

      Do các Windows Services không có giao diện người sử dụng, nên để theo dõi hoạt động của  Services người ta thường sử dụng Log của window để chứa các thông tin liên quan tới các thao tác xử lý bên trong Services. Để cập nhật vào dữ liệu Log của Window. Trong C# người ta sẽ sử dụng lớp EventLog trong namespace System.Diagnostics

      Việc khởi tạo đối tượng ghi Log của Window thường diễn ra trong Constructor của lớp Services, trong ví dụ này là DemoServices

    Thuộc tính Source dùng để định danh cho Log giúp, thường có tên trùng với ứng dụng để xác định Log này được dùng cho ứng dụng nào, trong ví dụ này là DemoSource.  Đoạn code trên giúp kiểm tra xem đã tồn tại Log nào sử dụng tên như vậy trong hệ thống chưa, nếu chưa tồn tại thì thực hiện log.

2.  Xử lý nghiệp vụ mang tính tuần hoàn bằng cách sử dụng 1 Timer.

      Mục đích sử dụng của Windows Services thường dùng để giải quyết các công việc theo quy trình mang tính chất lặp đi lặp lại và để thực hiện điều này trong Windows Services chúng ta thường sử dụng 1 Timer,  Trong C# cung cấp lớp Timer trong namspace System.Timers .

      Việc khởi tạo đối tượng Timer của Window thường diễn ra trong Constructor của lớp Services, trong ví dụ này là DemoServices

3. Các phương thức khác.

      Khi tạo Windows Services thường sẽ có thêm 2 phương thức cơ bản dùng để khởi động hoặc tắt Services bao gôm OnStart và OnStop như sau

       Nếu có sử dụng Timer bên trong Services thì Onstart thường sẽ là nơi dừng quy trình cũ và thự hiện quy trính mới.

Nếu có sử dụng Timer bên trong Services thì OnStop thường sẽ là nơi dừng quy trình cũ

Ngoải ra còn có thể bổ sung cho Services một sốcác phương thức hỗ trợ như tạm dừng ( OnPause), tiêp tục ( OnContinue),..

Dưới đây là toàn bộ code đẩy đủ của ví dụ.

4.  Tạo thông tin cài đặt cho Services bằng cách sử dụng lớp Installer

Để cài đặt services cần tạo bộ cài đặt cho Serivces thông qua lớp Installer của namspace System.Configuration.Install

Kích chuột phải vào file DemoServices chọn View Designer trên Visual Studio. Tại View Designer tiếp chọn Add Installer. 

Tao Project Windows Services Trong Visual Studio 2012 -02

5. Thực hiện Cài đặt Services thực tế trên hệ thống

     Có nhiểu cách để hỗ trợ bạn cài đặt window services:

 Cách 1 : Sử dụng lệnh command line sc để cài đặt Windows Services

 Cách 2 : Sử dụng tiên ích có sẵn của Visual Studio – Công cụ Installutil.exe ( thường sử dụng khi tự test)

  • Để cài đặt Windows Services, bạn phải có quyền Admin trên máy tính cần cài đặt. Các bước cài nh sau:
  1. Trong  Windows 7 và Windows Server, mở Developer Command Prompt  của Visual Studio Tools trong Start. Trong Windows 8 hoặc  Windows 8.1, chọn Visual Studio Tools trong màn hình Start, và chạy Developer Command Prompt với quyền Admin. (thực hiện right-click trên Developer Command Prompt, và chọn Run as Administrator.)

  2. Mở Command Prompt window, di chuyển tới file Exe project Windows Serivces  của bạn. Ví dụ của tôi là:  Visual Studio 2013\Projects\WindowSerivcesDemo\bin\Debug.

  3. Chạy dòng lệnh sau:

Cách 3 : Tạo Project cài đặt, được sử dụng khi Services được tạo trên máy khách hàng

      Xem chi tiết : tại đây

Cách 4 : Sử dụng bằng tay với các lệnh của PowerShell

Một sỗ lỗi khi cài đặt

    – Lỗi : “The source was not found, but some or all event logs could not be searched.  Inaccessible logs: Security.”

    – Khắc phục : chạy Developer Command Prompt với quyền Admin

 6. Kiểm tra Services sau cài đặt

     Kiểm tra services cài đặt thành công chưa bằng cách mở màn hình Start hoăc menu Start, và gõ services.msc.

Tao Project Windows Services Trong Visual Studio 2012 -04

    Start Services  bằng cách kích chuột phải và Start. Kiểm tra log xem thông tin hoạt động của Services.

Tao Project Windows Services Trong Visual Studio 2012 -03

Nguồn: https://hoctoantap.com/2016/08/12/cach-tao-mot-windows-service-applications-don-gian-trong-visual-studio-voi-csharp.html