C# Projemde veri aldığımda Olayı beklemek istiyorum. Program bazı verileri GetData diğer program okunan bu verilerin sonunda bir etkinlik oluşturur okuduğumdaUygulamadaki Olayı Bekleyin
(EventForGetData diyoruz). Yani, okumayı bitiren EventForGetData için beklemem gerekiyor.
Bu kod için bu görevi yazdım, ancak bu kodun daha uygun yazabileceğine inanıyorum.
public static bool WaitEvent = true;
public void EventForGetData(string variable)
{
WaitEvent = false;
}
public static string ForWaitGetData()
{
WaitEvent = true;
while (WaitEvent)
{
System.Threading.Thread.Sleep(5);
Application.DoEvents();
}
return Variable;
}
public object GetData(){
// start read data
...
// Wait for finish to read data
ForWaitGetData();
// finish read data
...
return MyObject;
}
Üzgünüm, ama benim Örnek ... Görev Görev = Task.Factory.StartNew (() => { webBrowser.Document.InvokeScript ("") için yazmak nasıl bilmiyorum Burada ilk kodu }) kodlayın. ContinueWith ((rs) => { ScriptInterface.ForWaitGetData(); // Etkinliğinizi veya istediğiniz herhangi bir şeyi başlatın }); – askeet
Eğer kodunuzu tam olarak anlayabiliyorsam, hiç bir değişkenin hiçbir anlamı yoktur, çünkü Değişken'i kullanmadığınız sürece kodunuzu bu http://pastebin.com/BTw6SZhF gibi düzenlemediniz. –
Ana sorun GetData() ve EventForGetData(), bir ve aynı iş parçacığı. GetData() kullandığımda bir COM nesnesi EventForGetData() oluşturduğundan. Bu nedenle, GetData olay için beklediğinde, COM GetData() içinde beklerken Application.DoEvent() kullanmazsam EventForGetData() işlevini çağırmaz. – askeet