我正在尝试填充数据集,但我想将系统填充此数据集所需的时间限制为30秒。
我已经尝试过(正如SO上其他地方所建议的那样):
Dim T As Date = Date.Now
da.Fill(ds, "DATASET")
Do
If (Date.Now - T).TotalSeconds >= 30 Then
Main.VIEW_Title.Text = "Error In Connection..."
Exit Sub
End If
Exit Do
Loop
但是系统只是在da.Fill(ds, "DATASET")
部分中挂起,并且没有执行“错误连接”消息。如果我把这条线放在DO
内也没关系,因为它停在那里。我需要的是它执行fill命令,然后如果它在30秒内没有完成,则允许我处理该错误。
由于
答案 0 :(得分:0)
不幸的是,这并不容易。
可以做的是:
现在真正的问题是:如果主线程确定后台线程在30秒后不完成,你会怎么做? DataAdapter.Fill没有提供优雅地中断操作的方法,所以你必须让它在后台继续。
这也意味着您必须在后台线程中使用单独的数据连接,因为ADO.NET类不是线程安全的。
我宁愿建议一种不同的方法:超过30秒的数据选择操作意味着:
因此,我建议修复根本原因,而不是使用复杂的解决方法来掩盖症状。