日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WPFApplication性能講解

WPF開發(fā)工具是由微軟研發(fā)的一款UI領(lǐng)域的圖形界面處理工具??梢詭椭绦騿T們很方便的實(shí)現(xiàn)特殊的圖形界面效果。Form 類似, WPF 同樣需要一個(gè) Application 來統(tǒng)領(lǐng)一些全局的行為和操作,并且每個(gè) Domain 中只能有一個(gè)WPF Application實(shí)例存在。#t#

和 WinForm 不同的是WPF Application默認(rèn)由兩部分組成 : App.xaml 和 App.xaml.cs,這有點(diǎn)類似于 Delphi Form,將定義和行為代碼相分離。當(dāng)然,WebForm 也采用了類似的方式。XAML 從嚴(yán)格意義上說并不是一個(gè)純粹的 XML 格式文件,它更像是一種 DSL,它的所有定義都直接映射成某些代碼,只不過具體的翻譯工作由編譯器完成而已。

下面是一個(gè)簡單的 App 定義。

  1. public partial class 
    App : Application  
  2. {  

當(dāng)你在自動生成的 Project 代碼中看到 paritial 時(shí),應(yīng)該下意識去找找 "This code was generated by a tool." …… 不過這次自動生成的代碼存放位置更加古怪 —— objDebugApp.g.cs。

 
 
 
  1. public partial class App : 
    System.Windows.Application  
  2. {  
  3. [DebuggerNonUserCode]  
  4. public void Initialize
    Component()  
  5. {  
  6. this.StartupUri = new 
    System.Uri("Window1.xaml", 
    System.UriKind.Relative);  
  7. }  
  8. [STAThread]  
  9. [DebuggerNonUserCode]  
  10. public static void Main()  
  11. {  
  12. App app = new App();  
  13. app.InitializeComponent();  
  14. app.Run();  
  15. }  

 

App.StartupUri 用于設(shè)置 MainWindow,App.Run() 啟動消息循環(huán)。當(dāng)然,還有那個(gè) STAThread,這意味著WPF Application依舊使用一個(gè) UI Thread 來處理 UI Message。

我們完全可以舍棄自動生成的代碼,自己手工寫一個(gè) App。

 
 
 
  1. public class App : Application  
  2. {  
  3. [STAThread]  
  4. private static void Main()  
  5. {  
  6. var app = new App();  
  7. var window = new Window 
    { Title = "WPF" };  
  8. app.Run(window);  
  9. }  

 

WPF Application提供了一些實(shí)用的屬性和方法。

Current: 獲取 Domain 中默認(rèn)的 Application 實(shí)例。

MainWindow: 獲取主窗口實(shí)例。

Windows: 獲取所有被實(shí)例化的 Window 實(shí)例。

ShutdownMode: 指定 Application.Shutdown 方式,包括主窗體關(guān)閉,最后一個(gè)窗口關(guān)閉,以及手工調(diào)用 Shutdown()。

Properties: 一個(gè)線程安全的全局字典,可用來存儲一個(gè)公共信息。

Shutdown: 該方法終止 Application Process,可向操作系統(tǒng)返回一個(gè)退出碼。

我們依然可以使用 Mutex 來阻止運(yùn)行多個(gè)實(shí)例。

 
 
 
  1. private void Application_Startup
    (object sender, StartupEventArgs e)  
  2. {  
  3. var createdNew = false;  
  4. var name = Assembly.GetEntry
    Assembly().FullName;  
  5. new Mutex(true, name, out 
    createdNew);  
  6. if (!createdNew)  
  7. {  
  8. MessageBox.Show("There is 
    already an instance 
    running, Exit!");  
  9. Application.Current.Shutdown();  
  10. }  

當(dāng)然也可以用 Windows 屬性判斷窗體是否已經(jīng)存在。

 
 
 
  1. private void button1_Click
    (object sender, RoutedEventArgs e)  
  2. {  
  3. var window2 = Application.
    Current.Windows.OfType
    ().FirstOrDefault
    (w => w is Window2);  
  4. if (window2 == null) 
    window2 = new Window2();  
  5. window2.Show();  
  6. window2.Activate();  

以上就是我們通過各種實(shí)例代碼為大家解讀的WPF Application相關(guān)概念。


文章標(biāo)題:WPFApplication性能講解
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/dpespip.html