2011-05-14 133 views
2

我想創建一個Windows服務應用程序,我可以在其中添加模塊,就像我們在WPF和Silverlight中一樣。 這是我如何去扔:如何在C#windows服務應用程序中使用PRISM?

public static class Program 
{ 
    public static string CurrentAppPath { get; set; } 

    static void Main() 
    { 
     Program.CurrentAppPath = Path.GetDirectoryName(
      System.Reflection.Assembly.GetEntryAssembly().Location); 

     ShellBootstrapper bootstrapper = new ShellBootstrapper(); 
     bootstrapper.Run(); 
    }  
} 

而對於ShellBootstrapper類:

class ShellBootstrapper : UnityBootstrapper 
{ 
    protected override IModuleCatalog CreateModuleCatalog() 
    { 
     DirectoryModuleCatalog directoryCatalog = 
      new DirectoryModuleCatalog() { ModulePath = Program.CurrentAppPath }; 
     return directoryCatalog; 
    } 

    protected override System.Windows.DependencyObject CreateShell() 
    { 
     return null; 
    }   

    public override void Run(bool runWithDefaultConfiguration) 
    { 
     base.Run(runWithDefaultConfiguration); 

     ServiceBase[] ServicesToRun; 
     ServicesToRun = new ServiceBase[] 
     { 
      new MyService(logger) 
     }; 
     ServiceBase.Run(ServicesToRun); 
    }   
} 

是否有出有什麼樣?

+0

這些片段似乎是好的。你錯過了什麼?我唯一要做的就是刪除'new MyService'並讓棱鏡解決這個問題 - 使用'Container'屬性和'Resolve '來讓你的服務具有所有的依賴關係。 – 2011-05-15 12:32:45

+0

您能夠讓您的服務運行嗎?我還沒有成功,我在我的服務中使用EventAggregator和Unity。 – grefly 2011-08-05 07:39:05

+0

這方面的更新? – 2014-01-14 16:45:35

回答

1

鎖定在this。你可以下載那裏的樣本,你可以看到圖片

下載並安裝prism(v4)後,在根目錄下你有一個名爲stock trader的文件夾。這就是你需要的! (運行桌面版)。在章節模塊中,您可以找到名爲service的文件夾。

這很簡單,你可以在這些方法就在這裏調用WCF服務。(你也可以使用WCF方法異步服務)

+0

Hi Rev,鏈接給了Silverlight和Windows桌面的很多示例,但沒有提供棱鏡的Windows服務示例。 – 2011-05-15 06:42:26

相關問題