2015-10-07 66 views

回答

0

沒有,你不能這樣做,可以立即!

但是你可以保存在你的應用程序的本地存儲上的文件 - 或者設置 - 並讓該文件每10分鐘-whatever-前臺應用程序檢查和關閉應用程序在特定的條件下..

+0

謝謝回答我的問題,關閉應用程序意外也是一個壞主意,是我把創建我的目標後臺任務的錯誤決定,甚至沒有後臺任務也我可以實現我的目標。我現在已經完成了我的目標而沒有後臺任務。再次感謝。 –

0

你的背景任務可以託管在它自己的專用進程中,或者可以在與您的用戶界面相同的進程中進行託管。在一個單獨的過程中,您的前臺應用程序可以打開和關閉,而不會影響您的後臺進程。在前臺應用程序關閉時的共享過程中,後臺任務也是如此。這不正確,反過來,共享流程模型不允許關閉後臺任務來關閉前臺應用程序。太糟糕了,是吧?

從技術上講,它不建議前臺應用程序自行關閉。但是,嘿,那個API是有東西的,對吧?當後臺任務與前臺應用共享進程時,它可以直接在共享內存之間進行通信。這將介紹方法1,用於通過使用靜態事件從後臺任務通信到您的前臺應用程序 -

如果這不是你想要的,你需要單獨的進程,那麼你的選擇是多一點棘手。

這裏是最好的選擇:

您可以設置一個特殊的設置(讓我們說這是ApplicationData.LocalSettings.Values["DataFromBackground"] = "PleaseExit"),然後調用從後臺任務ApplicationData.SignalDataChanged方法,這將提高通過前臺應用程序處理的ApplicationData.DataChanged事件。會有多少滯後?我不確定,但會有一些,所以要爲此做好準備。

請務必記得將DataFromBackground設置回某個空值,包括調用Value.Remove(),以免再次錯誤地處理它。話雖如此,當你的應用程序啓動(或恢復)時,如果你的後臺任務寫了它,而事件不能被聽到,你也應該查詢這個值。

這可能是實現通信的最簡單的方法。

有意義嗎? 關於這個話題我在Ignite session上多說這個。

祝您好運!

+0

感謝您回答我的問題,意外關閉應用程序也是一個壞主意,是的,我做了一個錯誤的決定,爲我的目標創建一個後臺任務,甚至沒有後臺任務,我也可以實現我的目標。我現在已經完成了我的目標而沒有後臺任務。再次感謝。 –