2010-09-10 40 views
5

Tôi có ứng dụng WPF (.Net 3.5 sp1) tải một loạt dữ liệu khi khởi động (phải mất vài giây để khởi động) nhưng nó hoạt động tốt sau khi dữ liệu được tải . Trong khi ứng dụng đang chạy, nếu tôi không chạm vào nó một thời gian (ví dụ, một vài giờ), và sau đó tôi thay thế nó, sau đó nó "tỉnh dậy" rất chậm. Câu hỏi của tôi:Ứng dụng WPF chậm khi trở về từ nhàn rỗi

  1. Tại sao lại như vậy? Có phải vì. Net deallocates dữ liệu lớn tôi tải từ bộ nhớ và nó phải bằng cách nào đó phục hồi đó?

  2. Tôi có thể làm gì trong ứng dụng của mình để ngăn chặn hành vi này ngay cả khi tôi biết tôi sẽ sắp xếp lại bộ nhớ cho đến khi ứng dụng được hoàn tất?

+1

Đâm trong bóng tối, nhưng tôi tự hỏi liệu hệ điều hành có tự ném bộ nhớ đó vào một tệp hoán đổi (bộ nhớ ảo), mà sau đó phải được đọc lại từ đĩa. – Jay

+1

Bạn biết Jay, có thể vậy. Tôi muốn biết nếu đó thực sự là lý do và những gì tôi có thể làm để ngăn chặn điều đó xảy ra, ít nhất là đến một ứng dụng này (buộc nó để chạy trong một chế độ ưu tiên cao hơn có lẽ?). Cám ơn bạn đã góp ý. –

+1

Bạn có thể chạy một hồ sơ trong tình trạng này? Có, tôi khuyên bạn nên [EQATEC] (http://www.eqatec.com/tools/profiler/). – Zamboni

Trả lời

0

tôi có thể thấy hai cách ra:

  1. truy cập tất cả dữ liệu lưu trữ của bạn trong một thread tách biệt với giao diện đồ họa (mà có lẽ sẽ có rất nhiều việc phải viết lại),
  2. thêm một số timer kích hoạt cuộc gọi mà sẽ luôn luôn làm việc (có thể chỉ cần lấy một số dữ liệu ngẫu nhiên từ bộ nhớ cache) và nó sẽ giữ cho ứng dụng của bạn được không nhàn rỗi, do đó ngăn chặn nội dung của nó để đi đến pagefile.
+0

Tôi thích ý tưởng thứ 2 của bạn. Cảm ơn. –

0

Như Jay đã đề xuất, điều này gần như chắc chắn xảy ra vì dữ liệu của ứng dụng được ghi vào tệp trang.

Nếu máy tính nằm trong tầm kiểm soát của bạn, hãy thử tắt tệp trang. Nếu máy tính có nhiều RAM và bạn không chạy nhiều chương trình cùng một lúc, bạn có thể thấy rằng bạn không thực sự cần tệp trang.

+0

Xin chào Roland, máy tính không nằm trong tầm kiểm soát của tôi. Máy tính của người dùng. –

+0

Bạn không thể làm gì nhiều. Bạn có thể thử chạy dữ liệu của ứng dụng của bạn theo định kỳ và chạm vào các đối tượng (như đề nghị velijkoz), nhưng bạn không thể chạm vào mọi thứ. Các công cụ liên quan đến GUI sẽ vẫn bị hoán đổi. Windows không trao đổi toàn bộ các ứng dụng, nó hoán đổi các trang bộ nhớ. –

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