2011-10-17 46 views
0

我目前正在使用可與客戶可能購買或不可購買的外圍設備進行交互的程序。這個裝置有點痛苦,我們購買它的公司希望我們的客戶使用公司自己的可執行文件來安裝設備驅動程序。修改C#代碼以使用和不使用設備驅動程序

然而,由於不是所有的客戶將購買的設備,它會如果他們沒有始終運行第二可執行,讓我們的軟件的工作是有用的。爲了做到這一點,我需要修改我們的計劃,以便在有和沒有司機的情況下工作。

ActiveX控件用於連接設備。這些需要使用Windows窗體設計器放入GUI;手動實例化控制使其容易發生崩潰,足夠刺激。

有沒有「最好」的方式,人們可以建立一個程序來檢測缺少的驅動程序,避免崩潰?我想到的唯一想法是:

  1. 手動實例化控件並使用try/catch語句來檢測和處理缺少的驅動程序,但我不認爲這種解決方案是可行的。
  2. 創建可能使用該設備的每個表單的2個版本。這是一個糟糕的主意,因爲當對錶單的一個版本進行更改時,需要仔細複製。
+1

你有沒有做過什麼工作來弄清楚「實例化手動」是什麼讓它變得不穩定? – Gabe

+0

您應該能夠簡單地提供驅動程序文件,並且Windows請求驅動程序,指示用戶爲驅動程序提供路徑。這會讓你解決第一個問題。第二個問題很難解決。 –

+0

Gabe:我花了一兩個星期的時間處理這個問題,但從來沒有遇到過任何理由。我在這裏找到了解決方案:http:// social。msdn.microsoft.com/Forums/en/vbinterop/thread/3a684282-71da-4567-b43b-6697a9125139。該解決方案對我來說很有意義,因爲驅動程序顯然是用Visual Basic編程的,而且我收到了同樣的錯誤信息。我試過問公司,但我從來沒有得到滿意的答覆。 – WildM

回答

1

通常情況下,這種情況下的最佳選擇是使用Facade或Adapter模式,通常與Factory一起使用。

創建一個接口到支持不存在該設備,然後實現接口,一個它實現了功能性和一個用於報告它不存在的兩個版本的裝置。

然後它使用它會調用一個工廠來創建實例對象和查詢通過接口對象來顯示的控件或表面官能團(這兩個選擇上述根據需要中的一個)的每個UI。

其餘的UI元素將保持不變,不需要在兩個地方維護。

0

我的方法是,確定在啓動驅動程序或沒有(安裝將是一個選項,如果設備不能在以後添加)。

然後,您可以設置,指出司機是否存在一個「全局變量」(我會瞄準一個Singleton對於這種類型的應用價值)。然後,您可以根據此值是true還是false來分叉代碼。

我不明白的是用戶界面與驅動程序綁定的原因。您應該能夠在堆棧中更深地構建表示層的數據,並避免「驅動程序不存在時UI被炸燬」。您可能仍然需要一些特定於「驅動程序數據存在」的邏輯,但這相當容易處理,無需擔心走雷場。

0
System.Management.SelectQuery("Win32_SystemDriver"); 
相關問題