2014-06-08 16 views
34

Tôi đang gặp sự cố khi tạm dừng sự kiện trên Windows Phone 8.1 bằng WinRT, nó không kích hoạt. Tôi không biết tại sao. Đây là mã của tôi:Sự kiện tạm dừng không tăng khi sử dụng WinRT

/// <summary> 
/// Initializes the singleton application object. This is the first line of authored code 
/// executed, and as such is the logical equivalent of main() or WinMain(). 
/// </summary> 
public App() 
{ 
    InitializeComponent(); 

    Suspending += OnSuspending; 
#if DEBUG 
    this.displayRequest = new DisplayRequest(); 
#endif 
} 

/// <summary> 
/// Invoked when application execution is being suspended. Application state is saved 
/// without knowing whether the application will be terminated or resumed with the contents 
/// of memory still intact. 
/// </summary> 
/// <param name="sender"> 
/// The source of the suspend request. 
/// </param> 
/// <param name="e"> 
/// Details about the suspend request. 
/// </param> 
private void OnSuspending(object sender, SuspendingEventArgs e) 
{ 
    var deferral = e.SuspendingOperation.GetDeferral(); 
    deferral.Complete(); 
} 

Tôi đặt điểm ngắt trên dòng var deferral = e.SuspendingOperation.GetDeferral(); và gỡ lỗi nó bằng Visual Studio. Sau đó, tôi nhấn nút khởi động trên điện thoại của mình và chạy một ứng dụng khác và đợi khoảng 10 giây. OnSuspending không hoạt động.

Bất kỳ ý tưởng nào?

Trả lời

63

sự kiện tạm ngừng sẽ không sa thải trong khi bạn đang gỡ lỗi (nhưng khi chạy ứng dụng bình thường của bạn, nó sẽ cháy ngay sau khi bạn rời khỏi App) như người ta nói cũng tại this blog:

.. .bạn sẽ chờ đợi mãi mãi để chúng kích hoạt, mặc dù ứng dụng của bạn chuyển qua lại màn hình! Lý do rất đơn giản: trong khi một ứng dụng đang được gỡ lỗi, Windows sẽ không đình chỉ nó.

Lưu ý rằng điều này có thể dẫn đến một số hành vi ứng dụng lạ, khi có cái gì đó sai trong Đình chỉ sự kiện - ví dụ nếu bạn vượt qua một số lớp phức tạp trong Frame.Navigate phương pháp và bạn sử dụng SuspensionManager. Trong khi gỡ lỗi ứng dụng của bạn sẽ hoạt động tốt (không bị tạm ngưng), nhưng sẽ bị lỗi mà không có chế độ gỡ lỗi.

Để kiểm tra như thế nào ứng dụng của bạn cư xử, bạn sẽ phải gọi các Đình chỉ manuallt, mở (hoặc thiết lập có thể nhìn thấy) gỡ lỗi vị trí thanh công cụ trong Visual Studio, ở đó bạn sẽ tìm thấy một danh sách thả xuống Lifecyce sự kiện, chọn có Tạm dừng và sau đó trả lại ứng dụng - Tiếp tục.

enter image description here

+0

Bạn có thể vui lòng cung cấp bất kỳ liên kết chứng minh nào không? – CAMOBAP

+3

@CAMOBAP Một liên kết chứng minh cho những gì? – Romasz

+0

Liên kết bằng chứng cho tuyên bố "Sự kiện tạm ngưng sẽ không kích hoạt khi bạn đang gỡ lỗi" (nếu có) – CAMOBAP

Các vấn đề liên quan