154
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
if (!process.CloseMainWindow()) {
// Không gửi được thông điệp. Kết thúc Notepad bằng Kill.
Console.WriteLine("CloseMainWindow returned false - " +
" terminating Notepad with Kill.");
process.Kill();
} else {
// Thông điệp được gửi thành công; đợi 2 giây
// để chứng thực việc kết thúc trước khi viện đến Kill.
if (!process.WaitForExit(2000)) {
Console.WriteLine("CloseMainWindow failed to" +
" terminate - terminating Notepad with Kill.");
process.Kill();
}
}
}
// Nhấn Enter để kết thúc.
Console.WriteLine("Main method complete. Press Enter.");
Console.ReadLine();
}
}
12.
12.
B o đ m ch có th ch y
ả ả
ỉ
ể ạ
B o đ m ch có th ch y
ả ả
ỉ
ể ạ
m t th hi n c a ng d ng t i m t th i đi m
ộ ể ệ ủ ứ
ụ
ạ ộ ờ ể
m t th hi n c a ng d ng t i m t th i đi m
ộ ể ệ ủ ứ
ụ
ạ ộ ờ ể
Bạn cần bảo đảm rằng, tại một thời điểm chỉ có thể chạy một thể hiện của ứng
dụng.
Tạo một đối tượng
System.Threading.Mutex
và bảo ứng dụng thu lấy quyền sở
hữu đối tượng này lúc khởi động.
Mutex
cung cấp một cơ chế để đồng bộ hóa quá trình thực thi của các tiểu trình vượt qua biên
tiến trình và còn cung cấp một cơ chế tiện lợi để bảo rằng chỉ một thể hiện của ứng dụng đang
chạy. Bằng cách cố thu lấy quyền sở hữu một đối tượng
Mutex
lúc khởi động và thoát nếu