498
Chương 12: Dịch vụ Web XML và Remoting
tượng ở xa không thể trực tiếp phát sinh sự kiện đến một lớp bình thường vì lớp bình
thường không thể được truy xuất từ các miền ứng dụng khác.
•
Bạn phải thay đổi các file cấu hình của client và server để cho phép “full serialization”
(điều này không cần thiết với .NET 1.0).
Dưới đây là lớp khả-truy-xuất-từ-xa mà bạn có thể sử dụng để phát sinh một sự kiện đến
client. Lớp này cung cấp phương thức
StartTask
để khởi chạy một bộ định thời, phát sinh sau
một thời gian ngắn (khoảng 10 giây). Khi bộ định thời phát sinh, đối tượng khả-truy-xuất-từ-
xa dựng lên sự kiện
TaskComplete
.
using System;
using System.Timers;
public delegate void TaskCompleted(object sender,
TaskCompleteEventArgs e);
public class RemoteObject : MarshalByRefObject {
public event TaskCompleted TaskComplete;
private Timer tmr = new Timer();
public void StartTask() {
tmr.Interval = 10000;
tmr.Elapsed += new ElapsedEventHandler(tmrCallback);
tmr.Start();
}
private void tmrCallback(object sender, ElapsedEventArgs e) {
tmr.Enabled = false;
if (TaskComplete != null) {
TaskComplete(this,
new TaskCompleteEventArgs("Task completed on server"));
}
}
public override object InitializeLifetimeService() {