Tôi đang cố gắng để lặp tất cả các file trong một thư mục sử dụng GetFilesAsync, nhưng mỗi khi tôi gọi phương thức getResults, nó ném một ngoại lệ mà nóiMột phương pháp được gọi vào một thời điểm bất ngờ
System.InvalidOperationException: một phương pháp được gọi là tại một thời gian bất ngờ
mã này chỉ đơn giản là
var files = myStorageFolder.GetFilesAsync(); //runs fine
var results = files.GetResults(); //throws the exception
tôi mới để Win 8 dev nên tôi có thể thiếu một cái gì đó hiển nhiên.
Chỉnh sửa (giải quyết) Tôi đang chạy các ứng dụng giao diện điều khiển của tôi, nhưng bây giờ mà các chương trình chạy async, phương pháp files.GetResult()
không hiện hữu.
static void Main(string[] args)
{
var files = GetFiles(myStorageFolder);
var results = files.GetAwaiter().GetResults();//Need to add GetAwaiter()
}
static async Task GetFiles(StorageFolder sf)
{
await sf.GetFilesAsync();
}
Tôi có cần bất kỳ câu lệnh 'Sử dụng' nào để sử dụng phương thức' GetAwaiter' không? – user1
@ user1 Tôi không thể nhớ, đây là từ 2 năm trước. Nhưng nhìn qua các tài liệu, đây là phương pháp mở rộng bạn cần: ['WindowsRuntimeSystemExtensions.GetAwaiter'] (https://msdn.microsoft.com/en-us/library/hh582011 (v = vs.110) .aspx). Nó được định nghĩa trong không gian tên 'System', vì vậy bạn có thể có nó trong phạm vi đã là – dcastro
Tôi nhận thấy' GetAwaiter() 'là trên' Task' và tôi đang cố gắng sử dụng nó trên một 'IAwaitableOperation' vì vậy tôi phải gọi' AsTask' rồi đến 'Kết quả', chết tiệt' UWP'. Cảm ơn mặc dù! – user1