मैं एक वर्ग है के लिए एक नमूदार आवरण बनाएँ,एक गैर धागा सुरक्षित वर्ग
public class Test
{
public int Calc();
}
जो कैल्क के लिए सभी कॉल जिस पर टेस्ट में बनाया गया था के रूप में ही धागे पर करने की आवश्यकता है। मुझे एक बार टेस्ट (महंगे ऑपरेशन) बनाने और कैल्क को कई बार कॉल करने की आवश्यकता है।
मैं एक आवरण मुझे कैल्क asynchronousely फोन देंगे करना चाहते हैं:
public class TestWrapper
{
private Test _test;
public IObservable<int> Calc();
}
एक तरह से यह एक BackgroundWorker या एक धागा बना सकते हैं और एक गारंटी के रूप में उपयोग किया जाएगा करने के लिए जो सभी संचालनों टेस्ट पर एक ही धागे पर हैं। सादगी के लिए, हम मान सकते हैं कि कैल्क() को सभी कॉल अनुक्रमिक रूप से निष्पादित किए जाएंगे, इसलिए क्यूइंग के बारे में चिंता करने की आवश्यकता नहीं है।
क्या ऐसा करने के लिए एक और अधिक सुरुचिपूर्ण आरएक्स तरीका है?
धन्यवाद, EventLoopScheduler एक ही थ्रेड पर कॉल मार्शल करने की कुंजी है। फिर भी, यह जवाब टेस्टवापर.कैल्क से स्विच करने का तरीका नहीं बताता है जो परीक्षण के लिए यूआई थ्रेड पर निष्पादित किया जाएगा। कैल्क ... –
@ सर्गी - आपकी टिप्पणियों के आधार पर अपडेट किया गया –
यह करीब है ... टुकड़ा गायब है कि आप _test नहीं बनाएं (जो EventLoopScheduler पर किया जाना चाहिए)। हम्म ... तय करना मुश्किल है - आप EventLoopScheduler के साथ पहले थे लेकिन @enigmativity ने सही उत्तर प्रदान किया। धन्यवाद दोस्तों आप दोनों चट्टान! –