2012-03-13 15 views
13

उपयोगकर्ता मेरी वेबसाइट पर कुछ पेज का अनुरोध करता है।एक लंबे समय तक पृष्ठभूमि कार्य शुरू करें

मैं क्या करना चाहता हूं? उपयोगकर्ता को एक तेज़ उत्तर भेजें और पृष्ठभूमि कार्य शुरू करें जो लंबे समय तक लेता है। ऐसा लगता है:

public ActionResult index() 
{ 
    var task = new Task(Stuff); 

    //start task async 
    task.start(); 

    return View(); 
} 

public void Stuff() 
{ 
    //long time operation  
} 

मैं यह कैसे कर सकता हूं?

+4

क्या कर सकते हैं? आपके पास पहले से कोड है, इसमें क्या गड़बड़ है? – svick

उत्तर

18

आप कार्य स्टार्टन्यू() विधि को एक पैरामीटर पास कर सकते हैं जो इंगित करता है कि जो कार्य आप शुरू कर रहे हैं वह "लंबा चल रहा है" है, जो कार्य को शेड्यूलर को एक नए थ्रेड पर कार्य शुरू करने के लिए संकेत प्रदान करता है।

var task = Task.Factory.StartNew(Stuff, TaskCreationOptions.LongRunning); 
0

आप एक प्रतिनिधि को परिभाषित करना चाहते हैं और लौटने से पहले इसे आग लगाना चाहते हैं। उदाहरण के लिए देखें,: http://msdn.microsoft.com/en-us/magazine/cc301332.aspx

4

यहाँ MSDN http://msdn.microsoft.com/en-us/library/ms978607.aspx#diforwc-ap02_plag_howtomultithread

से एक उदाहरण है आप ASP.NET MVC के लिए इसकी आवश्यकता है, तो आप इस ASP.NET WebForms उदाहरण के मूल विचार का उपयोग कर सकते हैं।

दृष्टिकोण आपकी नौकरी करने के लिए एक कार्यकर्ता धागा बना रहा है, इसे शुरू करें और उपयोगकर्ता को "प्रतीक्षा" पृष्ठ भेजें। यह "प्रतीक्षा" पृष्ठ कार्यकर्ता धागे द्वारा संसाधित परिणामों की तलाश में, प्रत्येक एन सेकंड में रीफ्रेश होगा। जब यह खत्म होता है, तो "प्रतीक्षा" पृष्ठ परिणाम दिखाता है।

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