IO Operation阻止了我的UI线程和另一个后台线程

时间:2011-06-29 12:55:41

标签: c# vb.net multithreading

我是Threads的新手,但我想知道如何在我的场景中命令线程执行,并且如下:

  • UI线程:Windows窗体背景
  • 线程:一种打印守护进程 用递归方法实现
  • IO操作:一个StreamWriter File.AppendText()
  • 的工作

当我执行我的主app.exe时,有时会在任务管理器(app.exe)中启动Windows窗体和执行过程,在某些机会中它只是在后台启动执行过程。

如何确定启动UI的行为,我必须建立优先级或其他方面?

我的代码片段:

在表单加载(app.exe)中,它调用跟随函数OnStart():

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

Hilo是Form.vb上声明的全局变量类型的线程

Writting是一个读取数据库并执行某些操作的函数,当它完成执行时会中止调用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是在.txt中写行的StreamWriter,其范围在所有app.exe中

我正在使用框架2.0,任何答案都可以在C#或Vb.Net中编写

提前致谢!

1 个答案:

答案 0 :(得分:0)

当我需要调用OnStart()函数时,我使用带有条件的递归方法,然后如果不满足条件则调用OnStop()。

由于