2010-03-18 14 views
5

मेरे पास एक चांदी का प्रकाश अनुप्रयोग है जिसमें मेरे पास एकाधिक अनुरोध हैं जो सर्वर पर जाते हैं। मैं चाहता हूं कि ये सभी अनुरोध सिंक्रनाइज़ किए जाएंगे यानी कतार के माध्यम से या मल्टीटास्किंग के माध्यम से। सबसे अच्छा मतलब क्या है ऐसा करने के लिए। Plz चांदी की रोशनी में कुछ उदाहरण प्रदान करते हैं जहां io ऐसा कर सकता है।चांदी की रोशनी में मल्टीटास्किंग और मल्टीथ्रेडिंग

उत्तर

0

ASYNC सीटीपी फ्रेमवर्क पर एक नज़र डालें: http://msdn.microsoft.com/en-us/vstudio/gg316360

यह आसान तरीके से संभाल/async अनुरोध सिंक्रनाइज़, निम्न नमूना की तरह करने के लिए प्रदान करता है:

public async void AsyncWebRequestGetResponse() 
{ 
    var response = await WebRequest.Create("http://www.weather.gov").GetResponseAsync(); 
    var stream = response.GetResponseStream(); 
    Console.WriteLine("First byte: {0}", stream.ReadByte().ToString("X2")); 
} 

या

public async void AsyncForEach() 
{ 
    var uris = new List<Uri> { new Uri("http://www.weather.gov"), new Uri("http://www.weather.gov/climate/"), new Uri("http://www.weather.gov/rss/") }; 

    foreach (var uri in uris) 
    { 
     WriteLinePageTitle(await new WebClient().DownloadStringTaskAsync(uri)); 
    } 
} 

क्लासिक तरीका अनुरोधों को सिंक्रनाइज़ करने के लिए AutoResetEvent जैसे WaitHandles का उपयोग करना है।

0

प्रतिक्रियाशील एक्सटेंशन भी एक वैध विकल्प हो सकता है। यह एक अच्छा article है जो इसे डब्ल्यूसीएफ सेवा में एसिंक्रोनस कॉल के लिए उपयोग करता है।

0

बिंदु यह है कि आप अनुरोध के आदेश को नियंत्रित नहीं कर सकते हैं, और डिफ़ॉल्ट रूप से आप केवल उसी डोमेन पर दो अनुरोध कर सकते हैं, इसलिए इसका मतलब है कि आपको अनुरोध भेजने के लिए ग्राहक पर कुछ बनाना होगा जिस क्रम में आप निष्पादित करना चाहते हैं, और निश्चित रूप से सिल्वरलाइट केवल BasicHttp बाइंडिंग का समर्थन करता है, इसका मतलब है कि आपको आदेशित संदेश संपत्ति नहीं मिली है।

संबंधित मुद्दे