2014-09-05 16 views
10

Tôi đang làm việc trên ứng dụng Windows Phone 8.1. Tôi khoảng một tháng vào dự án và đã thấy ít hoặc không có vấn đề với những gì tôi đã viết cho đến nay.Windows Phone 8.1 lỗi ứng dụng khi không gỡ lỗi Async await

Tôi đã quyết định thực hiện một số thử nghiệm trên ứng dụng mà không cần chạy nó thông qua trình gỡ lỗi VS 2013. Bây giờ, vì lý do nào đó, ứng dụng gặp sự cố trước khi nó đến màn hình đầu tiên. Tôi không nhận được ngoại lệ hoặc tin nhắn nào (tôi đang sử dụng Raygun để ghi lỗi).

Tôi đang sử dụng các phương thức không đồng bộ trong suốt (một số khoảng trống không đồng bộ, các tác vụ khác không đồng bộ), nhưng tất cả điều này hoạt động khi gỡ lỗi.

Điều chính sẽ giúp, là nhận được một số loại thông báo lỗi. Tôi đã được giảm để bình luận ra các phần của mã, nhưng cuối cùng điều này là nhận được tôi hư không vì có vẻ như khi tôi nghĩ rằng tôi đã tìm thấy vấn đề, tôi nhận được một vụ tai nạn tiếp tục xuống vào mã.

Tại một thời điểm, tôi đã tìm thấy sự cố với tính năng gọi: ListView.UpdateLayout(). Tôi đã nhận xét điều này và ứng dụng sẽ chạy đúng cách không có sự cố. Tôi sau đó un-nhận xét một số mã tiếp tục xuống và bây giờ nó bị rơi một lần nữa.

Nếu có ai biết cách nhận ngoại lệ từ điện thoại hoặc nếu ai đó gặp phải sự cố này trước đó, mọi trợ giúp sẽ được đánh giá cao. Tôi có thể cung cấp thêm bất kỳ thông tin nào cần thiết.

CẬP NHẬT: Tôi nghĩ rằng tôi đã thu hẹp sự cố xuống Sqlite.NET. Tôi đang sử dụng Sqlite.Net cho WinRT cùng với một phần mở rộng được gọi là SqliteNetExtensions. Tuyên bố cụ thể là

DataContext.Context.Connection.Table<Message>().Where(m => m.ChannelID == channelID && m.ChannelID.Contains("C")).ToList(); 

Nếu tôi nhận xét điều này, ứng dụng sẽ không có vấn đề gì. Câu lệnh LINQ này trả về 100 bản ghi. Tôi sẽ không nghĩ rằng một câu lệnh 100 bản ghi SELECT có thể khiến ứng dụng gặp sự cố, nhưng có vẻ như là thủ phạm. Bất kỳ ý tưởng về cách tối ưu hóa Sqlite.NET?

UPDATE 2: Cuối cùng figured it out! Nó không phải là SQLite cả. Đó không phải là mã của tôi chút nào. Đó là điện thoại của tôi. Tôi đang chạy Biểu tượng Nokia Lumia. Tôi đã cài đặt Lockscreen Beta của Rudy Huyn vài tuần trước. Nó gây ra một số vấn đề khi tôi gỡ cài đặt nó nhưng nó không liên quan đến ứng dụng của tôi. Hôm nay, tôi đã có đối tác kinh doanh của tôi cài đặt ứng dụng của tôi trên điện thoại của mình, anh ấy có cùng một kiểu điện thoại. Ứng dụng nhanh hơn khoảng 50 lần và không gặp sự cố. Tôi đã khôi phục lại điện thoại từ nhà máy và, lo and behold, nó chạy hoàn hảo. Vì vậy, mẹo chuyên nghiệp: KHÔNG CÀI ĐẶT LOCKSCREEN BETA BY RUDY HUYN !!!

+0

Bạn có thể thử các bản ghi trong Event Viewer dưới * Ứng dụng & Dịch vụ ** Microsoft ** của Windows ** appx \ **. –

+0

@JeroenVannevel Cảm ơn, nhưng điều đó không mang lại cho tôi nhiều. Những gì tôi thực sự cần là một cách để xem các bản ghi lỗi/sự kiện có trên chính Điện thoại. Có cách nào để truy cập thông tin đó không? –

+0

đặt toàn bộ nội dung của phương pháp trong một lần thử, và nắm bắt ngoại lệ trong một messagedialog? –

Trả lời

1

Ngoài ra, tôi sẽ dành thời gian để đảm bảo bạn luôn tránh sử dụng khoảng trống không đồng bộ. Nó cũng được ghi nhận rằng async void thường là một công thức cho sự cố.

Có một bài viết tốt về những nhược điểm thể hiện here

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