Tôi đang cố gắng viết một đoạn mã không đồng bộ thực sự đơn giản. Tôi có một phương pháp void mà không có bất kỳ tham số, đó là để được gọi từ một dịch vụ Windows. Tôi muốn khởi động nó không đồng bộ, để dịch vụ không phải chờ đợi cho đến khi phương pháp kết thúc.Tại sao phương thức không đồng bộ C# 4.0 này được gọi?
Tôi đã tạo một ứng dụng thử nghiệm rất đơn giản để đảm bảo rằng tôi đã thực hiện quyền mã hóa, nhưng phương pháp async không được gọi. Bất cứ ai có thể nhìn thấy những gì tôi đã làm sai? Tôi đang sử dụng .NET 4.0 bằng cách này, vì vậy tôi không thể sử dụng await (mà sẽ là một toàn bộ rất nhiều đơn giản!).
Dưới đây là toàn bộ mẫu thử nghiệm của tôi ...
using System;
using System.Threading;
namespace AsyncCallback {
internal class Program {
private static void Main(string[] args) {
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - About to ask for stuff to be done");
new Action(DoStuff).BeginInvoke(ar => StuffDone(), null);
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Asked for stuff to be done");
}
private static void StuffDone() {
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Stuff done");
}
private static void DoStuff() {
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Starting to do stuff");
Thread.Sleep(1000);
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Ending doing stuff");
}
}
}
Nhờ sự giúp đỡ bạn có thể cho.
@ Martin: nơi là 'async'/'await' trong câu hỏi trên? – spender
Tại sao không sử dụng .NET 4.5? – Rafael
@spender Ông đã sử dụng "async" làm từ viết tắt mục đích chung cho "không đồng bộ" thay vì từ khóa C#. – Servy