2013-03-22 168 views
17

我需要在項目中使用topshelf我有一個簡單的問題,我希望。當我使用HostFactory.Run時,一切正常,但我認爲使用HostFactory.New只需讀取函數中的名稱就可以了,這在這裏使用:http://docs.topshelf-project.com/en/latest/configuration/config_api.htmlHostFactory.Run和HostFactory.New的區別是什麼

然而,在更簡單的例子中,http://docs.topshelf-project.com/en/latest/configuration/quickstart.htmlHostFactory.Run使用的是HostFactory.New。那麼區別是什麼呢?

+0

查看源代碼 - https://github.com/phatboyg/Topshelf/blob/master/src/Topshelf/HostFactory.cs – stuartd 2013-03-28 13:18:09

+1

@stuartd,謝謝。所以基本上新創建一個主機,但運行創建並運行它。 – 2013-03-28 15:44:36

回答

17

Run非常簡單,只是包含:

return New(configureCallback).Run(); 

所以Run只是方便的方法來創建並立即運行實例,而不僅僅是創建實例爲New一樣。

6

HostFactory.Run會吃掉所有的異常,所以它會無聲的退出,你永遠不知道是什麼造成了它。

HostFactory.New

會拋出異常。

+2

necro的種類,但需要更新。 剛剛遇到了這個問題,其中「運行」將執行而不會拋出任何東西,但過程從未真正運行。 與此相符,有用的答案會被降低。 – 2017-02-22 16:50:15