मेरे पास मेरे आवेदन में एक कार्यकर्ता धागा है जो तीन अलग-अलग चीजों के लिए ज़िम्मेदार है। दो नौकरियों के लिए अनुरोध मैंने जो पंक्तियां लिखी हैं, उसमें बदलती है, जब नेटवर्क स्ट्रीम पर अनुरोध चालू होता है तो अन्य नौकरी सक्रिय होती है। मैं अपने कार्यकर्ता थ्रेड को इंतजार करना चाहता हूं जब कोई काम नहीं किया जाए। यह दो पंक्तियों के साथ आसान है क्योंकि वे मैन्युअल रीसेट इवेंट का पर्दाफाश करते हैं जो उनके पास आइटम होते हैं, हालांकि नेटवर्कस्ट्रीम में ऐसा प्रतीत नहीं होता है। नेटवर्कस्ट्रीम को टीसीपी क्लाइंट से पुनर्प्राप्त किया गया है।डेटा स्ट्रीम पढ़ने के लिए नेटवर्क स्ट्रीम के लिए आप कैसे प्रतीक्षा करते हैं?
क्या मैं के बाद कर रहा हूँ कोड है कि कुछ इस तरह दिखता है:
while (notDone)
{
WaitHandle.WaitAny(new WaitHandle[] { queue1.HasData, queue2.HasData, netStream.HasData });
// ...
if (netStream.DataAvailable)
{
netStream.Read(buffer, 0, 20);
// process buffer
}
}
किसी को भी एक WaitHandle जब एक NetworkStream डेटा है सेट कर दिया जाता है कि प्राप्त करने के लिए एक तरह से पता है?
यह संभव शून्य बाइट्स पढ़ने के लिए BeginRead प्राप्त करने के लिए है? –
यदि रिमोट होस्ट कनेक्शन को बंद कर देता है और 0 बाइट्स उपलब्ध नहीं होगा तो कोई और डेटा उपलब्ध नहीं होगा। तुमने क्यों पूछा? – SpaceghostAli
यदि आप BeginRead को शून्य बाइट्स नहीं पढ़ सकते हैं तो आप मुख्य लूप और कॉल बैक के बीच पढ़ने वाले बफर को प्रबंधित करना शुरू कर देते हैं। यह पूरी तरह से करने योग्य है लेकिन जैसा कि मैं चाहूंगा उतना अच्छा नहीं है। –