Bir sınıf olması için test oluşturulduğu aynı iş parçacığı üzerinde yapılacak Calc için tüm çağrıları gerektirirolmayan bir iş parçacığı güvenli sınıfa
public class Test
{
public int Calc();
}
gözlemlenebilir bir sarmalayıcı oluşturun. Testi bir kez (pahalı işlem) oluşturmalı ve birden çok kez Calc'i aramalıyım.
bana asynchronousely Kireç diyelim bir sarmalayıcı olsun isterim: Bu BackgroundWorker veya Konu oluşturmak ve teminat olarak kullanmak olacaktır yapmak
public class TestWrapper
{
private Test _test;
public IObservable<int> Calc();
}
bir yolu olduğunu tüm işlemler On Test aynı konu üzerinde. Basitlik için, Calc() 'a yapılan tüm çağrıların sırayla yürütüleceğini, yani kuyruklama konusunda endişelenmenize gerek olmadığını varsayabiliriz.
Bunu yapmak için daha zarif bir RX yolu var mı?
Diğer bir seçenek Test üyesinde [ThreadStatic]
koymak kullanmaktır ...
var MyTEST = new ThreadLocal<Test>();
o zaman herhangi aramalar için MyTEST.Value.Calc()
kullanabilirsiniz: Test
senin örneğini oluştururken
Teşekkürler, EventLoopScheduler aynı iş parçacığına yapılan çağrıları yönlendirmek için bir anahtardır. Yine de, bu cevap test için UI iş parçacığı üzerinde yürütülecek olan TestWrapper.Calc nasıl değiştirileceğini açıklamıyor.Calc ... –
@Sergey - Yorumlarınız üzerine dayalı olarak güncellenmiş –
Bu daha yakın ... Parça eksik olduğunu _test (EventLoopScheduler üzerinde yapılması gereken) oluşturmayın. Hmm ... Karar vermek zor - EventLoopScheduler ile ilk sizdiniz ama @enigmativity doğru cevabı sağladı. Teşekkür ederim siz ikiniz de sallayın! –