2011-06-29 3 views
0

を遮断し、次のようです:IO操作は、私はスレッドでは初心者だが、私は私のシナリオでは、スレッドの実行を注文する方法を知りたい私のUIスレッドと、別のバックグラウンドスレッド

  • UIスレッド: Windowsフォームの背景
  • スレッド:File.AppendText(の 仕事をするのStreamWriter)
:印刷デーモン の種類は、再帰的な方法
  • IOオペレーションを実装

    メインapp.exeを実行すると、タスクマネージャ(app.exe)でWindowsフォームと実行プロセスが起動することがありますが、いくつかのポートフォリオでは実行プロセスがバックグラウンドで起動されるだけです。

    UIを起動する動作を決定するにはどうすればよいですか、優先度を設定する必要がありますか?

    マイコードスニペット:

    Dim start As ThreadStart = New ThreadStart(AddressOf Writing) 
           Hilo = New Thread(start) 
           Hilo.IsBackground = True 
           Hilo.Start() 
    

    ヒロがForm.vb

    で宣言スレッドのグローバル変数の型です:フォームのLoad(app.exeの)、それは以下の関数のOnStart()を呼び出して

    足す)は、それが実行を終了したときに、それは(OnStopを呼び出したスレッドを中断し、データベースを読み、いくつかのアクションを実行する機能である:

    Protected Sub OnStop() 
         Try 
          If Not (Hilo Is Nothing) And Hilo.IsAlive Then 
           Hilo.Abort() 
          End If 
          objWriter.WriteLine("------------------------------------------------") 
          objWriter.Close() 
         Catch exc As Exception 
          LogEventSI(exc.Message & " - " & exc.StackTrace) 
         End Try 
        End Sub 
    

    ObjWriterは、その範囲は、すべてのapp.exeの

    に私はフレームワーク2.0を使用していて、いずれかの答えはC#やVb.Net

    にwrittedすることができ.txtファイル内の行を記述するのStreamWriterのおかげでありますあらかじめ!

  • +0

    私の悪い英語のため申し訳ありませんが、私は質問が本当に明確ではないと思いますが、? –

    +0

    ブロックされているものは何もありません。 UIスレッドがブロックされていると思われるコードを提供できますか? –

    +0

    OnStart()は再帰的メソッドであるためselfsを繰り返します –

    答えて

    0

    私は、OnStart()関数を呼び出す必要があるときに条件付き再帰メソッドを使用して解決策になり、条件が満たされない場合、OnStop()を呼び出します。私はそれがより理解しやすくするために何ができるか

    おかげ

    関連する問題