मैं एक WP8 ऐप पर काम कर रहा हूं जो लाइव टाइल अपडेट करने के लिए शेड्यूल्ड टास्कएजेंट का उपयोग करता है। यह वास्तव में एक बहुत ही सरल ऐप है। समस्या यह है कि जब मैंने सीधे WP7 प्रोजेक्ट से WP8 प्रोजेक्ट में कोड कॉपी किया है, तो यह अनुसूचित कार्य को लॉन्च नहीं करेगा। इतना ही नहीं, लेकिन अगर मैं डिबगिंग कर रहा हूं तो मुझे एक त्रुटि मिलती है और मैं परीक्षण के लिए निर्धारित कार्य लॉन्च करने का प्रयास करता हूं।System.Windows.ni.dll क्या है?
'System.InvalidOperationException'
इतना ही नहीं System.Windows.ni.dll
में हुई है, लेकिन यह मुझे के माध्यम से देखने के लिए किसी भी ढेर नहीं देता है, और कहता है कि स्रोत नहीं है उपलब्ध है, कि मैं disassembly खिड़की में disassembly देख सकते हैं, जिसका मतलब मेरे लिए कुछ भी नहीं है। तो, एक बहुत उपयोगी त्रुटि नहीं, आईएमओ।मैंने निर्धारित कार्य के निर्माता में ब्रेक पॉइंट डालने का प्रयास किया, और यह इसे कभी नहीं बनाता है। अगर मैं परीक्षण के लिए लॉन्च पर टिप्पणी करता हूं, तो कोई त्रुटि नहीं। लेकिन निश्चित रूप से, ऐप को मेरे फोन में डालने पर, इसे कभी भी लॉन्च नहीं किया गया, इसे रात भर छोड़ दिया गया।
var taskName = "TileUpdater";
var oldTask = ScheduledActionService.Find(taskName) as PeriodicTask;
if (oldTask != null)
{
ScheduledActionService.Remove(taskName);
}
if (useLiveTile)
{
//GenerateTileInfo();
PeriodicTask task = new PeriodicTask(taskName);
task.Description = AppResources.BackgroundTaskDescription;
oldTask = ScheduledActionService.Find(taskName) as PeriodicTask;
if (oldTask == null)
{
ScheduledActionService.Add(task);
}
#if DEBUG
ScheduledActionService.LaunchForTest(taskName, TimeSpan.FromSeconds(10));
#endif
}
कोड WP7 के संस्करण में ठीक काम करता है:
यहाँ मेरी कोड है। :/
यह मेरा WMAppManifest.xml फ़ाइल में है:
<ExtendedTask Name="BackgroundTask">
<BackgroundServiceAgent Specifier="ScheduledTaskAgent"
Name="xxxScheduledTask"
Source="xxxScheduledTask"
Type="xxxScheduledTask.SecheduledAgent" />
</ExtendedTask>
मेरी निर्धारित कार्य में, केवल एक चीज मैं कर रहा हूँ एक प्रक्रिया है जो टाइल की जानकारी उत्पन्न करता है बुला रहा है, टाइल को अद्यतन करने, और के लिए पल, मैं परीक्षण के लिए लॉन्च को फिर से चला रहा हूं, इसलिए मैं यह देखने के लिए देख सकता हूं कि यह फिर से अपडेट हो रहा है, हालांकि मैंने यह टिप्पणी की है - मैंने इसे यहां पेस्ट करने के लिए असम्बद्ध किया है, लेकिन उस पर टिप्पणी की गई थी। यहाँ मेरी OnInvoke विधि है:
GenerateTileInfo();
#if DEBUG
ScheduledActionService.LaunchForTest(task.ToString(), TimeSpan.FromSeconds(60));
#endif
NotifyComplete();
GenerateInfo विधि कुछ भी है कि एक समस्या का कारण होता है ऐसा नहीं करता है, लेकिन निश्चित रूप से, यह कभी नहीं वैसे भी वहाँ हो रही है। मैंने टाइल जानकारी को उत्पन्न करने और इसे लागू करने का परीक्षण किया, उस कोड को MainPage.xaml.cs में रखकर और इसे अभी कॉल करने के लिए, यह देखने के लिए कि यह काम करता है या नहीं, और जिस कोड को मैं कॉल कर रहा हूं वह ठीक काम करता है। तो अगर मैं ऐप खोलता हूं, तो टाइल अपडेट हो जाती है। अब मुझे काम करने के लिए पृष्ठभूमि कार्य प्राप्त करने की आवश्यकता है।
कोई भी मदद जो कोई भी पेशकश कर सकता है उसकी सराहना की जाती है। एक अन्य सुराग यह है कि कल रात मुझे एक त्रुटि मिल रही थी जिसमें पीडीबी फ़ाइल का पता लगाने में सक्षम नहीं था - मुझे लगता है कि यह माइक्रोसॉफ्ट था। फोन पीडीबी, लेकिन जो कुछ भी था, उसे सिस्टम.Windows.ni.dll भी कहा जाता है। फ़ाइल, लेकिन अब मुझे वह पीडीबी मुद्दा नहीं मिल रहा है, बस यह अवैधऑपरेशन अपवाद। कल रात डिबगिंग सिंबल (मुझे नहीं पता कि इसका मतलब क्या है) लोड नहीं हो रहा था। आज वे हैं। मुझे नहीं पता कि मैंने इसे ठीक करने के लिए क्या किया। मुझे पता चल सकता है कि सभी को पुनरारंभ किया जा सकता था।
इसके अलावा, मैंने एक नई परियोजना बनाने और मेरे कोड को एक नई परियोजना में कॉपी करने की कोशिश की, मुझे लगता है कि मेरे पास दूषित प्रोजेक्ट फ़ाइल हो सकती है, लेकिन अब जो त्रुटि हो रही है वह वही है जैसा कि मैंने आज पहले प्राप्त किया था नई परियोजना बनाने के लिए।
फिर से, किसी भी मदद की सराहना की जाती है। धन्यवाद।
(संपादित करें - नई 11:34 am EST पर इस बिंदु 12/29 नीचे टिप्पणियां जोड़ी) ========================= ================================================== ======
मैंने एक और एक्सप्रिमेंट की कोशिश की।मैंने एक नया प्रोजेक्ट बनाया है, और यह देखने के लिए कि क्या मैं ऐप डीबग कर सकता हूं, http://www.jeffblankenburg.com/2011/11/25/31-days-of-mango-day-25-background-agents/ से कॉपी/चिपका हुआ कोड बनाया है। मुझे कोड में कुछ मामूली परिवर्तन करना पड़ा जो जेफ ब्लैंकनबर्ग ने लिखा था, क्योंकि वह कहता है कि जब आप निर्धारित कार्य प्रोजेक्ट जोड़ते हैं, तो यह स्वचालित रूप से WMAppManifest.xml फ़ाइल को निम्न कोड में जोड़ देगा, जो ऐसा नहीं था। मैंने मैन्युअल रूप से ऐसा किया।
मैं भी FlipTileData को StandardTileData प्रकार बदल कोड कि ScheduledAgent.cs को चिपकाया जाता है में (के बाद से है कि क्या WP8 परियोजना में डिफ़ॉल्ट था है)।
इसके अलावा, केवल एक चीज मैंने किया है कि जेफ अपने लेख में उल्लेख नहीं करता है, निर्देशों का उपयोग करके आवश्यक जोड़ना है।
इस प्रयोग के परिणामों को देखते हुए, मुझे लगता है कि मैं किसी भी तरह से अपने विजुअल स्टूडियो इंस्टॉल को दूषित कर रहा हूं। क्या आप सहमत होंगे? मैं सोच रहा हूं कि वीएस2012 की अनइंस्टॉल/पुनर्स्थापित करना और फोन एसडीके यहां क्रमशः है, लेकिन चूंकि इसमें बहुत समय लगता है, इसलिए मैं एक और राय प्राप्त करना चाहता था। धन्यवाद।
अद्यतन (2012/01/04) ==================================== ============================
अनइंस्टॉल किया गया वीएस, रजिस्ट्री के माध्यम से चला गया, फिर VS2012 को पुनर्स्थापित किया गया, और एसडीके फोन किया गया। !
[प्रबंधित संक्रमण के मूल निवासी] System.Windows.ni.dll MS.Internal.JoltHelper.OnUnhandledException (वस्तु प्रेषक, System.UnhandledExceptionEventArgs: कम से कम अब यह मेरे स्टैक ट्रेस दिखाएगा - यहाँ अब मैं क्या मिलता है args) [मूल संक्रमण के लिए प्रबंधित] mscorlib.ni.dll! System.Reflection.RuntimeAssembly.nLoad (System.Reflection.AssemblyName फ़ाइल नाम, स्ट्रिंग कोडबेस, सिस्टम.Security.Policy.Evidence असेंबली सुरक्षा, सिस्टम। Reflection.RuntimeAssembly स्थान संकेत, रेफरी System.Threading.StackCrawlMark stackMark, System.IntPtr pPrivHostBinder, bool throwOnFileNotFound, bool forIntrospection, bool suppressSecurityChecks) mscorlib.ni.dll! System.Reflection.RuntimeAssembly.InternalLoadAssemblyName (System.Reflection.AssemblyName assemblyRef, System.Se Curity.Policy.Evidence असेंबली सुरक्षा, सिस्टम। रिफ्लेक्शन। रनटाइम एस्प्लोर्स reqAssembly, ref system.hreading.StackCrawlMark stackMark, System.IntPtr pPrivHostBinder, bool throwOnFileNotFound, बूल फॉर इंट्रोस्पेक्शन, बूल दबाने की सुरक्षा जांच) mscorlib.ni.dll! सिस्टम। रिफ्लेक्शन। रनटाइमएस्क्रिप्ट। आंतरिक लोड (स्ट्रिंग असेंबलीस्ट्रिंग, सिस्टम.Security.Policy.Evidence असेंबली सुरक्षा, रिफ सिस्टम। थ्रेडिंग .StackCrawlMark स्टैकमार्क, सिस्टम। INTPtr pPrivHostBinder, इंट्रोस्पेक्शन के लिए बूल) mscorlib.ni.dll! System.Reflection.RuntimeAssembly.InternalLoad (स्ट्रिंग असेंबलीस्ट्रिंग, सिस्टम। सुरक्षा .Policy.Evidence असेंबली सुरक्षा, रिफ सिस्टम। थ्रेडिंग .StackCrawlMark स्टैकमार्क, इंट्रोस्पेक्शन के लिए बूलमार्क) mscorlib.ni.dll! सिस्टम। रिफ्लेक्शन.एस्प्लोरर। लोड (स्ट्रिंग असेंबली स्ट्रिंग) माइक्रोसॉफ्ट.फोन.निडेल! माइक्रोसॉफ्ट.फोन। बैकग्राउंडएजेंटएक्टिवेटर। LoadEntryPointAssembly (स्ट्रिंग असेंबलीनाम) माइक्रोसॉफ्ट.फोन.निएल.एल.एल. माइक्रोसॉफ्ट.फोन.बैकग्राउंडएजेंटएक्टिवेटर.लोडएजेंट (स्ट्रिंग असेंबलीनाम, स्ट्रिंग टाइपनाम) माइक्रोसॉफ्ट.फोन.नी.dll! माइक्रोसॉफ्ट.फोन.बैकग्राउंडएजेंटएक्टिवेटर.मिक्रोस.फोन.आईबैकग्राउंडएजेंटएक्टिवेटर। क्रिएटबैकग्राउंडएजेंट (स्ट्रिंग असेंबली, स्ट्रिंग typeinfo) Microsoft.Phone.ni.dll! Microsoft.Phone.BackgroundAgentDispatcher.AgentRequest.Invoke() Microsoft.Phone.ni.dll! Microsoft.Phone.BackgroundAgentDispatcher.InvocationThread() mscorlib.ni.dll! System.Threading .ThreadHelper.ThreadStart_Context (ऑब्जेक्ट स्टेट) mscorlib.ni.dll! सिस्टम। थ्रेडिंग। निष्पादन कॉन्टेक्स्ट.रुनरनेट (सिस्टम। थ्रेडिंग। एक्सेक्यूशन कॉन्टेक्स्ट निष्पादन कॉन्टेक्स्ट, सिस्टम। थ्रेडिंग।ContextCallback कॉलबैक, वस्तु राज्य, bool preserveSyncCtx) mscorlib.ni.dll! System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback कॉलबैक, वस्तु राज्य, bool preserveSyncCtx) mscorlib.ni.dll ! System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback कॉलबैक, वस्तु राज्य) mscorlib.ni.dll! System.Threading.ThreadHelper.ThreadStart() [प्रबंधित संक्रमण के मूल निवासी]
यह भी माना जाता है कि मैं कम मेमोरी एमुलेटर का उपयोग कर रहा था और भूल गया था कि कम ज्ञात उपकरणों में पृष्ठभूमि एजेंटों की अनुमति नहीं है, लेकिन मेरे द्वारा उपयोग किए जाने वाले एमुलेटर (या डिवाइस) में कोई फर्क नहीं पड़ता।
आह ....... मैंने इसे बदल दिया। DOH! –
ठीक है - इसे दोनों स्थानों पर आपके वाक्यविन्यास में बदल दिया गया है (वास्तव में गलत वाक्यविन्यास केवल अनुसूचित एग्जिट क्लास में था, जो कभी नहीं पहुंचा था), लेकिन मुझे अभी भी वही त्रुटि मिलती है, और मैं अभी भी निर्माता पर ब्रेक पॉइंट तक नहीं पहुंचता अनुसूचित एजेन्ट का, लेकिन लॉन्चफॉरटेस्ट के लिए सही समय पर त्रुटि होती है। –
यहां एक और चीज है जिसके बारे में मुझे यकीन नहीं है ...अनुसूचित एजेन्ट के निर्माता में ब्रेकपॉइंट का कहना है कि ब्रेकपॉइंट हिट नहीं होगा - इस दस्तावेज़ के लिए कोई प्रतीक लोड नहीं किया गया है। मुझे नहीं पता कि इसका क्या अर्थ है - इस दस्तावेज़ के लिए कोई प्रतीक लोड नहीं किया गया है। और मैं एक चीज वापस लेता हूं ... टाइमपैन समाप्त होने के लिए त्रुटि बहुत जल्द होती है। समय सेट के बावजूद, मेनपेज.एक्सएमएल सीएस में लॉन्चफॉरटेस्ट से पहले लाइन ब्रेकपॉइंट जारी करने के बाद त्रुटि लगभग 3-4 सेकंड में होती है। इससे पहले, यह उस समय पर निर्भर था, लेकिन अब नहीं। :/ –