0

Başımın üzerine çiziyorum.Evrensel Windows Uygulaması Arka Plan Görevi "kod 1 (0x1)" ile çıkıldı "

UWP uygulamasında her 15 dakikada bir (TimeTrigger kullanarak) ve Internet kullanılabilir olduğunda (bir SystemTrigger kullanarak) kaydedilmiş bir arka plan görevim var. Görsel stüdyo kullanarak hata ayıklama yaparken, bunların "Yaşam Döngüsü Etkinlikleri" nde göründüğü gibi doğru bir şekilde kaydedildiğini biliyorum. Yine de, onları kayıt için benim kod aşağıda: Ben görevler benim manifest'te doğru beyan dikkat ettik

bool registered1 = false; 
bool registered2 = false; 
foreach (var task in BackgroundTaskRegistration.AllTasks) 
{ 
    if (task.Value.Name == "BackgroundGPS") 
    { 
     registered1 = true; 
    } 

    if (task.Value.Name == "InternetAvailGPS") 
    { 
     registered2 = true; 
    } 
} 

await BackgroundExecutionManager.RequestAccessAsync(); 

if (!registered1) 
{ 
    var builder1 = new BackgroundTaskBuilder(); 

    builder1.Name = "BackgroundGPS"; 
    builder1.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask"; 

    var triggerTime = new TimeTrigger(15, false); 

    builder1.SetTrigger(triggerTime); 

    BackgroundTaskRegistration task1 = builder1.Register(); 

} 

if (!registered2) 
{ 
    var builder2 = new BackgroundTaskBuilder(); 

    builder2.Name = "InternetAvailGPS"; 
    builder2.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask"; 

    var triggerIA = new SystemTrigger(SystemTriggerType.InternetAvailable, false); 

    builder2.SetTrigger(triggerIA); 

    BackgroundTaskRegistration task2 = builder2.Register(); 
} 

. Onlar olmasaydı, uygulamam onları kaydetmeye çalışırken bir istisna atardı.

Hata ayıklama modunda çalışırsam, Yaşam Döngüsü Etkinlikleri'nde hem BackgroundGPS hem de InternetAvailGPS öğelerinin göründüğünü görebiliyorum. Ancak, ne zaman yürütmek için zorlamak bunlardan birini tıklayın ben çıktı penceresinde aşağıdaki olsun:

The program '[4728] backgroundTaskHost.exe' has exited with code 1 (0x1). 

Ben benim 'Run' yönteminde kodunun ilk satırında ayarlanmış bir kesme noktası var arka plan görevi ancak bu asla vurulmadı. Arka plan görevi hiçbir zaman yüklenmez ve kaçmaz ve nedenini bilmiyorum. Bu muhtemelen benim Çalıştır yöntemi ile bir sorun değildir, ancak (Ben bunu çok et ihmal ve sadece başını ve sonunu yer verdik) Bu hem çalıştık

public async void Run(IBackgroundTaskInstance taskInstance) 
{ 
    Debug.WriteLine("GPS Started"); 
    int errCode = 0; 
    try 
    { 
     _deferral = taskInstance.GetDeferral(); 
     saveGPSStatus(DateTime.Now.ToString(), "", " "); 

     var access = await Geolocator.RequestAccessAsync(); 

     if (access != GeolocationAccessStatus.Allowed) 
     { 
      Debug.WriteLine("No access"); 
      saveGPSStatus("", "", "No GPS Access"); 
      return; 
     } 

     Geolocator locator = new Geolocator(); 
     locator.DesiredAccuracyInMeters = 100; 

     Geoposition position = await locator.GetGeopositionAsync(); 

     //Stuff goes on in here 

     _deferral.Complete(); 
    } 
    catch (Exception e) 
    { 
     Debug.WriteLine(e.Message); 
     saveGPSStatus("", "", "Unexpected error. Err code "+errCode+". " + e.Message); 
     _deferral.Complete(); 
    } 

} 

şöyle Bir Windows Phone ve bir Windows Tablet hem çalıştıran 10.0.10586.164, ve her ikisi de arka plan görevimi yürütmüyor.

Yukarıda belirttiğim gibi, bunlar birkaç hafta önce mükemmel bir şekilde çalışıyorlardı ve uygulamanın bazılarının şikayetçi olduğu bir şeylerin yanlış olduğunu fark ettiler!

Her türlü yardım büyük beğeni topluyor.

cevap

5

En sonunda çalışıyorum, ana projemdeki arka plan görev projem için bir referansı kaçırıyordum. Bundan önce bir noktada kaza ile silmiş olmalıyım.

0

Sadece başvurulmamış olanı genişletmek için, doğru TaskEntryPoint ad alanına ve sınıf adına sahip olmamak da bu hataya neden olacaktır. Benim için sınıf adını özledim.

İlgili konular