求助:有关线程操作的问题

angelo_2574 2008-06-17 06:18:32
有两个线程,线程1和线程2在实现暂停和终止的时候有问题,无法解决。
情况如下:
线程1用一般的语句完成暂停和终止功能,在程序单步调试的过程中是没有问题的。但是运行的时候却不能够实现功能,没有出现相应的事件响应过程。按钮按下的时候根本没有反应,但是单步调试是有的,而且是可以暂停和继续线程1的,很奇怪。
线程2是用TRY CATCH语句完成的,能够实现暂停和运行的功能,但是暂停后再次继续线程就不成功了。

Private Sub btnpause1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpause1.Click
If t1.ThreadState = ThreadState.Running Then
t1.Suspend()
btnpause1.Text = "继续"
ElseIf t1.ThreadState = ThreadState.Suspended Then
t1.Resume()
btnpause1.Text = "暂停"
End If
End Sub

Private Sub btnabort1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnabort1.Click
If t1.ThreadState = ThreadState.Suspended Then
t1.Resume()
t1.Abort()
ElseIf t1.ThreadState = ThreadState.Running Then
t1.Abort()
End If
End Sub

Private Sub btnpause2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpause2.Click
If btnpause2.Text = "暂停" Then
Try
t2.Suspend()
Catch err As Exception
End Try
btnpause2.Text = "继续"
Else
Try
t1.Resume()
Catch ex As Exception
End Try
btnpause2.Text = "暂停"
End If
End Sub

Private Sub btnabort2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnabort2.Click
Try
If t2.ThreadState = ThreadState.Suspended Then
t2.Resume()
End If
If t2.IsAlive Then
t2.Abort()
End If
Catch ex As Exception
End Try
btnpause2.Enabled = False
btnabort2.Enabled = False
End Sub

小弟是入门不到两个月的新手,高手们帮忙解决下,多提点解决方法。
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelo_2574 2008-06-17
  • 打赏
  • 举报
回复
顶下,怎么没有人来啊~~~
angelo_2574 2008-06-17
  • 打赏
  • 举报
回复
楼上的谢谢了,本人刚刚入门,不是很懂C#,有人能在说说VB里的解决方法么?我是在VS2008的环境编写的
figroc 2008-06-17
  • 打赏
  • 举报
回复
不要用Suspend/Resume这些方法来控制, 不准确, 不可预知.
应该用ManualResetEvent来实现.

ManualResetEvent _event = new ManualResetEvent(false);

public static void Start()
{
Thread t = new Thread(new delegate() {
while (true)
{
_event.WaitOne();
// do ur work...
}
});
t.IsBackground = true;
t.Start();
}

public static void Pause()
{
_event.Reset();
}

public static void Resume()
{
_event.Set();
}

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧