? Bạn cần thực thi một ứng dụng trong một tiến trình mới.
» Sử dụng đối tượng System.Diagnostics.ProcessStartInfo để chỉ định các chi tiết cho ứng dụng cần chạy. Sau đó, tạo đối tượng System.Diagnostics.Process để mô tả tiến trình mới, gán đối tượng ProcessStartInfo cho thuộc tính StartInfo của đối tượng Process, và rồi khởi chạy ứng dụng bằng cách gọi Process.Start.
Lớp Process cung cấp một dạng biểu diễn được-quản-lý cho một tiến trình của hệ điều hành và cung cấp một cơ chế đơn giản mà thông qua đó, bạn có thể thực thi cả ứng dụng được-quản-lý lẫn không-được-quản-lý. Lớp Process hiện thực bốn phiên bản nạp chồng cho phương thức Start (bạn có thể sử dụng phương thức này để khởi chạy một tiến trình mới). Hai trong số này là các phương thức tĩnh, cho phép bạn chỉ định tên và các đối số cho tiến trình mới. Ví dụ, hai lệnh dưới đây đều thực thi Notepad trong một tiến trình mới:
// Thực thi notepad.exe, không có đối số.
Process.Start("notepad.exe");
// Thực thi notepad.exe, tên file cần mở là đối số.
Process.Start("notepad.exe", "SomeFile.txt");
Hai dạng khác của phương thức Start yêu cầu bạn tạo đối tượng ProcessStartInfo được cấu hình với các chi tiết của tiến trình cần chạy; việc sử dụng đối tượng ProcessStartInfo cung cấp một cơ chế điều khiển tốt hơn trên các hành vi và cấu hình của tiến trình mới. Bảng 4.3 tóm tắt một vài thuộc tính thông dụng của lớp ProcessStartInfo.

» Các thuộc tính của lớp ProcessStartInfo
Thuộc tính:Mô tả
Arguments:Các đối số dùng để truyền cho tiến trình mới.
ErrorDialog:Nếu Process.Start không thể khởi chạy tiến trình đã được chỉ định, nó sẽ ném ngoại lệ System.ComponentModel.Win32Exception. Nếu ErrorDialog là true, Start sẽ hiển thị một thông báo lỗi trước khi ném ngoại lệ.
FileName:Tên của ứng dụng. Bạn cũng có thể chỉ định bất kỳ kiểu file nào mà bạn đã cấu hình ứng dụng kết giao với nó. Ví dụ, nếu bạn chỉ định một file với phần mở rộng là .doc hay .xls, Microsoft Word hay Microsoft Excel sẽ chạy.
WindowStyle:Một thành viên thuộc kiểu liệt kê System.Diagnostics. ProcessWindowStyle, điều khiển cách thức hiển thị của cửa sổ. Các giá trị hợp lệ bao gồm: Hidden, Maximized, Minimized, và Normal.
WorkingDirectory:Tên đầy đủ của thư mục làm việc.

Khi đã hoàn tất với một đối tượng Process, bạn nên hủy nó để giải phóng các tài nguyên hệ thống—gọi Close, Dispose, hoặc tạo đối tượng Process bên trong tầm vực của lệnh using. Việc hủy một đối tượng Process không ảnh hưởng lên tiến trình hệ thống nằm dưới, tiến trình này vẫn sẽ tiếp tục chạy.
Ví dụ dưới đây sử dụng Process để thực thi Notepad trong một cửa sổ ở trạng thái phóng to và mở một file có tên là C:\Temp\file.txt. Sau khi tạo, ví dụ này sẽ gọi phương thức Process.WaitForExit để dừng tiểu trình đang chạy cho đến khi tiến trình kết thúc hoặc giá trị time-out (được chỉ định trong phương thức này) hết hiệu lực.
Visual C# Code:
  1. using System;
  2. using System.Diagnostics;
  3.  
  4. public class StartProcessExample {
  5.  
  6.     public static void Main () {
  7.  
  8.         // Tạo một đối tượng ProcessStartInfo và cấu hình cho nó
  9.         // với các thông tin cần thiết để chạy tiến trình mới.
  10.         ProcessStartInfo startInfo = new ProcessStartInfo();
  11.  
  12.         startInfo.FileName = "notepad.exe";
  13.         startInfo.Arguments = "file.txt";
  14.         startInfo.WorkingDirectory = @"C:\Temp";
  15.         startInfo.WindowStyle = ProcessWindowStyle.Maximized;
  16.         startInfo.ErrorDialog = true;
  17.  
  18.         // Tạo một đối tượng Process mới.
  19.         using (Process process = new Process()) {
  20.  
  21.             // Gán ProcessStartInfo vào Process.
  22.             process.StartInfo = startInfo;
  23.  
  24.             try {
  25.  
  26.                 // Khởi chạy tiến trình mới.
  27.                 process.Start();
  28.  
  29.                 // Đợi tiến trình mới kết thúc trước khi thoát.
  30.                 Console.WriteLine("Waiting 30 seconds for process to" +
  31.                     " finish.");
  32.                 process.WaitForExit(30000);
  33.  
  34.             } catch (Exception ex) {
  35.  
  36.                 Console.WriteLine("Could not start process.");
  37.                 Console.WriteLine(ex);
  38.             }
  39.         }
  40.  
  41.         // Nhấn Enter để kết thúc.
  42.         Console.WriteLine("Main method complete. Press Enter.");
  43.         Console.ReadLine();
  44.     }
  45. }

Trích từ "Các giải pháp lập trình C#"