我目前正在開發一個自定義任務,並且遇到問題。自定義任務:TaskHost參數持久性
我的自定義任務包括三個文件:
- MBTask包含實現接口的「任務」
- MBTaskUI實現接口「IDtsTaskUI」
- MBForm這是一個Form類。
在Initialize()函數的MBTaskUI中,我重新調用TaskHost對象並將其保存在一個變量中。然後在GetView()函數O發送此TaskHost到我的表單生成
它工作的偉大,我可以利用這個TaskHost在我的形式獲得的參數,當我打開表單和保存他們當我關閉。
String script_tmp = (String)th.Properties["myScript"].GetValue(th);
SqlConnection conn_tmp = (SqlConnection)th.Properties["myConnection"].GetValue(th);
th.Properties["myScript"].SetValue(th, myScript);
th.Properties["myConnection"].SetValue(th, myConnectionTarget);
所以,當我重新打開我的任務編輯器,我使用我收到的參數初始化一些對象。
但是,這裏是我的問題,在我的MBTask類中,我有一個驗證參數(myConnection和myScript)的Validate()函數。並且這些參數始終爲空(也是在我通常使用MBForm和close函數初始化之後)。
所以,我不明白的是爲什麼我的參數沒有實例化? 是不是它的工作「th.Properties [」 myScript的 「]的SetValue(日myScript的);」
myScript的和MyConnection的聲明公衆我MBTask
public class MBTask : Task
{
public SqlConnection myConnection { get; set; }
public String myScript { get; set; }
我知道這些參數保存,因爲我能得到什麼?。當我重新打開編輯器時,他們回來了。那麼爲什麼當我執行Validate()時它們是空的?
我是否需要從MBTaskUI和MBTask中添加一個指向TaskHost的鏈接?
似乎有什麼東西我不懂這裏...
感謝您的幫助,
萊奧勒瓊。
調查後我明白,UI和Task是完全分離的組件。 那麼,我怎樣才能得到我用窗體(和TaskHost)定義的屬性? 我可以在屬性面板(myScript&myConnection)中看到它們,當我在編輯它之後點擊我的組件。 –