Müşteri verilerini almak için zaman alabilen işlevlere sahip bir dll var. Şimdiye kadar UI kilitleme önlemek için iyi eski threading.thread.start yöntemleri kullanarak oldum, ama ben .net 4.5 içinde Await/Async yöntemleri etrafında başımı almaya çalışıyorum. Bu işlevler etrafında bir Await sarıcısı oluşturmak için basit bir yol var mı? Dll'yi 4,5'e güncelleyebilirim ancak kodun yapısını değiştiremez. Her şey bir hatayla sonuçları deneyin .. Boole.net Varolan/eski kodla bekle
Örnek kodudur 'uygun bir GetAwaiter yöntemine sahip '' bekliyoruz bu tür gerektirir' .... anlamıyorum ne
Public Async Function GetByID(id As Integer) As Task(Of Boolean)
'serviceBase is a dll with a number of functions for getting
'data that returns true when a customer object has been filled
Return Await ServiceBase.GetCustomer(id)
End Function
olduğunu ServiceCase'de GetCustomer'ı güncelleyebilseydim, bunu Async olarak işaretlemeli ve bir görevi (Boole) döndürmeliyim. Ancak, hatalar alıyorum çünkü GetCustomer'ın herhangi bir noktada Await kullanmasına gerek kalmıyor. Bu, engellenen bir kullanıcı arayüzüne toplam olarak eklediği bir dizi küçük işlem.
aslında bir müşteri bir zaman uyumsuz işlem alma eylemidir mı? Eşzamansız bir yöntem olan Async'in anlamı yoktur. Kodu GetCustomer'da gösterebilir miydiniz, bu durumda daha ilginç. – kai
Bu işlevin bir örneği (bir müşteri, örneğin kaynak A & C ile ilgili ayrıntılara sahip olabilir) 'Genel İşlev GetCustomer (Tamsayı olarak id) Boolean Olarak GetFromSourceA (id) Sonra ', bazı müşterilerle çalışabilir ve doğru olarak dön müşteri ile bazı işler yapmak ve gerçek End dönmek GetFromSourceB (id) Sonra ' GetFromSourceC (id) Sonra Eğer varsa müşteri ile bazı işler yapmak ve gerçek End dön' Eğer End If Eğer varsa IsNothing (müşteri) Sonra iade Yanlış İade Gerçek Bitiş İşlevi ' – user3334804
Ne @ anlamı,' GetCustomer 'sürece bir görev döndürür, çağrılıyor 'GetCustomer' değil 'eşzamanlı olarak automagically yapmak için gidiyoruz. "async/await", * zaten * eşzamansız yöntemler için * beklemeyi * kolaylaştıran sözdizimsel şekerdir. Örneğin, "GetCustomer" bir web servisi çağırırsa, bir hizmet yöntemini zaman uyumsuz olarak çağırmak için 'client.CallThatMethodAsync' komutunu kullanabilir ve "client.CallThatMethod" işlevini eşzamanlı olarak çağırmak yerine sonucu alabilirsiniz. Eğer bir DB erişim metodu ise, 'ExecuteReaderAsync' yerine 'ExecuteReader' –