2011-06-17 67 views
5

Tôi đã triển khai một ứng dụng WPF và đã đăng ký để khởi chạy khi khởi động Windows. Ứng dụng của tôi là một ứng dụng đăng nhập đơn giản khi người dùng đăng nhập xuất hiện trong khay biểu tượng. Vấn đề là mất khoảng 30 giây để hiển thị chính nó sau khi khởi động Windows. Tôi đã thử Ngen mà không thành công lớn. Tôi muốn tránh thực hiện một màn hình giật gân. Tôi muốn ứng dụng WPF của tôi xuất hiện "ngay lập tức" sau khi Windows khởi động tương tự như những gì Windows Live Messenger làm. Bất cứ điều gì tôi có thể làm như vậy là để giảm thời gian khởi động của nó? Tôi có lựa chọn nào khác hơn là viết mã nguyên bản không? Cảm ơn.Cách tối ưu hóa khởi chạy ứng dụng WPF khi khởi động Windows

Trả lời

2

Có phải mất 30 giây để khởi động khi máy tính không hoạt động (tức là nếu bạn khởi động máy tính bằng cách nhấp đúp khi máy tính không bận tải cửa sổ)?

Trong khi khởi động Windows, máy tính thường bận rộn với rất nhiều thứ và điều đó có thể gây chậm đi cho ứng dụng của bạn. Không có nhiều bạn có thể làm sau đó.

Nhưng, một số lời khuyên chung cho việc cải thiện khởi động của một ứng dụng WPF:

  • Chỉ nhanh chóng điều khiển bạn thực sự cần để hiển thị cho người dùng ban đầu
  • Giảm sự phức tạp của các điều khiển của bạn/cửa sổ.
  • Đừng làm bất cứ điều gì thời gian tiêu thụ trong các nhà thầu của các điều khiển của bạn & cửa sổ
    • thứ Thậm chí ngây thơ như đọc một tập tin từ đĩa địa phương có thể tốn thời gian nếu đĩa là bận rộn với các công cụ khác (như nó thường là trong windows startup)
    • cuộc gọi dịch vụ Web có thể mất thời gian thêm dài nếu mạng vẫn chưa được khởi tạo hoàn toàn chưa
    • một giải pháp dễ dàng là để giảm tải công việc nặng nhọc để một BackgroundWorker hoặc sử dụng các cuộc gọi không đồng bộ để làm I/O và mạng yêu cầu

Ngoài ra còn có một thiết lập mà bạn có thể đưa vào app.config mà nói thời gian chạy không xác thực các hội đồng với giấy chứng nhận (việc kiểm tra này có thể mất một thời gian dài, bắt đầu đặc biệt lạnh):

<configuration> 
    <runtime> 
    <generatePublisherEvidence enabled="false"/> 
    </runtime> 
</configuration> 

Một số chi tiết các mẹo chung có sẵn trên trang MSDN trên Application Startup Time.

+1

Không có vấn đề với một sự khởi đầu lạnh trên double-click, phải mất khoảng 2 giây để khởi động. Vấn đề là trên cửa sổ khởi động. Tôi đã nhìn thấy các ứng dụng như Windows Live Messenger khởi chạy ngay lập tức trên các cửa sổ khởi động nhưng đây là những ứng dụng gốc. Tôi có thể đến gần một cái gì đó tương tự trong WPF? – pfongkye

+0

Xem qua mã khởi động/xây dựng của bạn và tìm kiếm các công cụ như đĩa I/O và I/O mạng và di chuyển chúng đến chủ đề nền/mã async. Có lẽ ứng dụng của bạn đang chặn một mạng chưa được khởi tạo bởi các cửa sổ chưa –

+0

@IsakSavo thực sự đơn giản xin chào WPF ứng dụng thế giới thể hiện cùng một hành vi – Poma

0

Có thể this site sẽ hữu ích cho bạn. Nó liệt kê một số tùy chọn bạn có để bắt đầu một ứng dụng trước đó (nếu đó là một dịch vụ) hoặc sau khi đăng nhập Windows. Họ liên quan đến một số hacking đăng ký mà bạn sẽ cần phải hoàn tác trong quá trình gỡ bỏ cài đặt.

0

Sử dụng regedit, Tạo một DWORD trong registry tại

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Serialize

gọi StartupDelayInMSec.

Giá trị mặc định phải được đặt thành 0, nhưng hãy kiểm tra kỹ.

Cắt giảm khoảng 10 giây cho thời gian khởi chạy ứng dụng của tôi sau khi khởi động.

lưu ý: Khóa tuần tự có thể không tồn tại.
Bạn có thể tạo nó bằng cách kích chuột phải vào Explorer và chọn New -> Key

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