0

別のクラスから BackgroundWorker を使用するコードを作成しました。

    public void BackgroundWorkerTest()
    {
        BackgroundWorker bw = new BackgroundWorker();

        bw.WorkerReportsProgress = true;
        bw.WorkerSupportsCancellation = false;
        bw.DoWork += new DoWorkEventHandler(DoWork);
        bw.ProgressChanged += new ProgressChangedEventHandler(ProgressChanged);
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted);
        bw.RunWorkerAsync();
        while (bw.IsBusy) 
            System.Threading.Thread.Sleep(50);
    }

    private void DoWork(object sender, DoWorkEventArgs e)
    {
        BackgroundWorker worker = sender as BackgroundWorker;

        string connStr = "<conn_str>";
        string path = "";
        MyClass.StaticMethod(string1, string2, worker);
    }

    private void ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        int progress = e.ProgressPercentage;
        string message = e.UserState.ToString();
    }

    private void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        string progress = "Done.";
    }

MyClass.StaticMethod() から呼び出します

    worker.ReportProgress(percents, message);

進捗情報を送信します。上記のコード (BackgroundWorkerTest() メソッドで言及) などを VBScript で使用することは可能ですか? VBScript (InstallShield 内) から進捗情報を出力する必要があります。これに十分な機能がありますか?

4

1 に答える 1

0

MSI ベースの InstallShield プロジェクト タイプを使用している場合は、Google Windows Installer XML (WiX) Deployment Tools Foundation (DTF) を参照してください。DTF は、MSI 内で実行されるマネージ コード カスタム アクションを作成するための SDK です。

InstallScript プロジェクト タイプを使用している場合は、Google DotNetCoCreateObject (InstallScript 関数) を検索します。

とにかく、車輪の再発明をしていないことを確認することをお勧めします。(接続文字列への参照を見ました。)

于 2013-02-18T19:49:35.437 に答える