मैं एक सी # Winforms आवेदन के विकास कर रहा हूँ, आवेदन के हिस्से के एक वेबसर्वर AsyncUpload उपयोग करने के लिए फ़ाइलों को अपलोड किया जाएगा (इसे का उपयोग, एक porgress कॉलबैक उपयोग करने की आवश्यकता के कारण), में सी # कार्यक्रमसी #: एक समारोह कॉल को अवरुद्ध करने तक की स्थिति उत्पन्न होने
मैं पाश अपलोड कर रहा है समारोह
for(int i=0;i < 10 ; i++)
{
Uploadfun();
}
कॉल के लिए एक सरल हो गया और मज़ा कुछ जादू करता है:
Uploadfun()
{
// Logic comes here
// webClient.UploadFileAsync runs a 2nd thread to perform upload ..
webClient.UploadFileAsync(uri, "PUT", fileNameOnHD);
}
और एक कॉलबैक डब्ल्यू कहा जाता हो जाता है कि मुर्गी Async अपलोड
Upload_Completed_callback()
{
//Callback event
}
किया जाता है संपादित
तर्क अनुक्रम:
- मज़ा बुलाया जाता है (पाश से)
- मज़ा तर्क निष्पादित और किया जाता है ..
- पाश
- कॉलबैक eventuall बुलाया जाएगा के लिए वापस चला जाता है y, जब UploadFileAsync (जो एक और धागा में कुछ तर्क चल रहा है) खत्म हो जाएगा
समस्या 3 बिंदु, जब निष्पादन पाश के लिए वापस करने के लिए ले जाता है, मैं जब तक जारी रखने से पाश ब्लॉक करने की आवश्यकता पर है कॉलबैक बुलाया जाता है।
क्या आपके पास 'मजेदार' कार्यान्वयन तक पहुंच है? आपको शायद एक सिंक्रोनस इंटरफेस प्रदान करने पर विचार करना चाहिए जिस पर एसिंक एपीआई लागू किया गया है। –
जिस तरीके से आप इसका वर्णन कर रहे हैं, आपका कोड अनुक्रमिक और एकल थ्रेडेड लगता है, जिसका अर्थ है कि 'कॉलबैक' फ़ंक्शन को लूप कहा जाता है जब तक कि लूप जारी नहीं रहेगा। अगर मैं अधिक विस्तृत स्पष्टीकरण देकर गलत हूं तो कृपया मुझे सही करें। –
@ मादी: फिर आप इसे पीछे की ओर कर रहे हैं। आपको तर्क के मूल में 'अपलोडफाइल' के सिंक्रोनस संस्करण का उपयोग करना चाहिए और यदि आपको इसकी आवश्यकता हो तो इसके शीर्ष पर एसिंक एपीआई का उपयोग करें। –