488
Chương 12: Dịch vụ Web XML và Remoting
TimeSpan elapsedTime = DateTime.Now - startDate;
Console.WriteLine("Completed after " + elapsedTime.ToString());
Console.WriteLine("Total delay time: " + totalDelay.ToString());
}
}
Trong trường hợp này, thời gian đã trôi qua nhỏ hơn thời gian trì hoãn tổng cộng:
Completed after 00:00:20.2591312
Total delay time: 47
Cách thứ hai là sử dụng callback. Bạn cần nhập một ủy nhiệm chỉ định một phương thức cụ
thể trong mã lệnh. Khi phương thức web hoàn tất, ủy nhiệm này sẽ được gọi với đối số là một
đối tượng
IAsyncResult
thích hợp.
Dưới đây là đoạn mã gọi phương thức
BeginWait
(cùng với một callback):
AsyncCallback callback = new AsyncCallback(Callback);
// Gọi phương thức một cách bất đồng bộ.
proxy.BeginWait(callback, proxy);
Và đây là callback (sẽ được kích hoạt khi thao tác hoàn tất):
public static void Callback(IAsyncResult handle) {
localhost.WaitService proxy =
(localhost.WaitService)handle.AsyncState;
int result = proxy.EndWait(handle);
Console.WriteLine("Waited " + result.ToString());
}
7.
7.
T o l p kh -truy-xu t-t -xa
ạ ớ
ả
ấ ừ
T o l p kh -truy-xu t-t -xa
ạ ớ
ả
ấ ừ
Bạn muốn tạo một lớp có thể được truy xuất từ một ứng dụng khác hay từ một
máy tính khác trên mạng. Tuy vậy, bạn không cần tính tương thích xuyên-nền
và bạn muốn có hiệu năng tối ưu.
Làm cho lớp này trở thành khả-truy-xuất-từ-xa (remotable) bằng cách dẫn xuất
từ lớp
System.MarshalByRefObject
, và tạo một host để đăng ký lớp này với kiến
trúc .NET Remoting.
Remoting cho phép bạn làm cho một đối tượng trở nên truy xuất được qua các biên máy và
biên tiến trình. Trong khi dịch vụ Web XML là giải pháp lý tưởng khi bạn cần chia sẻ các chức