विंडोज 8 ऐप के लिए, सी #/एक्सएमएल में मैं पृष्ठभूमि कार्य पंजीकृत करने का प्रयास करता हूं। यह कहना मुश्किल है लेकिन मुझे लगता है कि मेरा पृष्ठभूमि कार्य अच्छी तरह से पंजीकृत है लेकिन जब मैं डीबग स्थान टूलबार पर अपने पृष्ठभूमि कार्य के नाम पर क्लिक करता हूं तो मेरा ऐप किसी भी संदेश के बिना काम करना बंद कर देता है।एक समय ट्रिगर किए गए पृष्ठभूमि कार्य को पंजीकृत नहीं कर सकता
मैंने इवेंट व्यूअर पर लॉग को देखा और मुझे मिलता है: "प्रविष्टि बिंदु MyApp.Pages.SampleBackground टास्क और नाम उदाहरण के साथ पृष्ठभूमि कार्य त्रुटि कोड 0x80010008 के साथ सक्रिय करने में विफल रहा।"
private async void Button_Click_BackgroundTask(object sender, RoutedEventArgs e)
{
string entryPoint = "MyApp.Pages.SampleBackgroundTask";
string taskName = "Example hourly background task";
TimeTrigger hourlyTrigger = new TimeTrigger(60, false);
BackgroundTaskRegistration myBackGroundTaskRegistration = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, null);
if(myBackGroundTaskRegistration != null)
AttachProgressAndCompletedHandlers(myBackGroundTaskRegistration);
}
public static BackgroundTaskRegistration RegisterBackgroundTask(String taskEntryPoint,
String name,
IBackgroundTrigger trigger,
IBackgroundCondition condition)
{
var taskRegistered = false;
var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks;
foreach (var item in iter)
{
var task = item.Value;
if (task.Name == name)
{
taskRegistered = true;
return item.Value as BackgroundTaskRegistration;
}
}
var builder = new BackgroundTaskBuilder();
builder.Name = name;
builder.TaskEntryPoint = taskEntryPoint;
builder.SetTrigger(trigger);
if (condition != null)
{
builder.AddCondition(condition);
}
BackgroundTaskRegistration taskBack = builder.Register();
return taskBack;
}
private void AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration task)
{
task.Progress += new BackgroundTaskProgressEventHandler(OnProgress);
task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
}
private void OnProgress(IBackgroundTaskRegistration task, BackgroundTaskProgressEventArgs args)
{
var progress = "Progress: " + args.Progress + "%";
}
private void OnCompleted(IBackgroundTaskRegistration task, BackgroundTaskCompletedEventArgs args)
{
Debug.WriteLine("Hi");
}
मैं प्रकट में इस कहा::
<Extension Category="windows.backgroundTasks" EntryPoint="MyApp.Pages.SampleBackgroundTask">
<BackgroundTasks>
<Task Type="timer" />
</BackgroundTasks>
</Extension>
मैं कुछ भूल गए
यहाँ मेरी कोड है?
आपकी मदद के लिए धन्यवाद।
संपादित करें:
public sealed class SampleBackgroundTask : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
_deferral.Complete();
}
}
ठीक है, स्टार्टर्स के लिए, आपके पास 'asaitc' विधि है, जिसमें 'प्रतीक्षा' है, जो एक कंपाइलर चेतावनी होनी चाहिए। – Servy
MyApp.Pages.SampleBackgroundTask एक ही समाधान में एक अलग प्रोजेक्ट में है? – Akinwale
नहीं, यह कार्य मेरे प्रोजेक्ट पेज में से किसी एक के भीतर एक अलग वर्ग में है। क्या यह एक अलग परियोजना पर होना चाहिए? मैंने कार्य के कोड को जोड़ने के लिए अपना प्रश्न संपादित किया। –