相关疑难解决方法(0)

C#Thread Termination和Thread.Abort()

在MSDN中,Thread.Abort()方法的描述说:"调用此方法通常会终止线程."

为什么不总是?

在哪些情况下它不会终止线程?

有没有其他可能终止线程?

.net c# multithreading

82
推荐指数
6
解决办法
8万
查看次数

使用Thread.Abort()有什么问题

所以我知道你不应该使用

Thread.Abort()
Run Code Online (Sandbox Code Playgroud)

但我从未得到过很好的解释.是否存在性能损失或隐藏的问题?

我知道你不能忽略/吞下ThreadAbortException(这是有道理的)

.net c# multithreading

62
推荐指数
5
解决办法
3万
查看次数

如何在没有任何用处的情况下停止永远运行的线程

在下面的代码中,我有一个while(true)循环.考虑到try块中存在一些代码的情况,其中线程应该执行一些约需一分钟的任务,但是由于某些预期的问题,它正在运行.我们可以阻止那个线程吗?


public class thread1 implements Runnable {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        thread1 t1 = new thread1();
        t1.run();

    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(true){
            try{        
                Thread.sleep(10);

            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

23
推荐指数
2
解决办法
2万
查看次数

如何有效地杀死C#中的线程?

我不是一个 ,诚实.我已经阅读了有关线程查杀的所有建议,但请考虑代码.它执行以下操作:

  1. 它启动一个线程(通过StartThread方法)
  2. 它调用数据库查找ServiceBroker队列中的任何内容.注意WAITFOR命令 - 这意味着它将一直坐在那里直到队列中有东西.这一切都在MonitorQueue方法中.
  3. 杀死线程.我试过.Interrupt- 似乎什么也没做.然后我尝试了.Abort,永远不应该使用,但即使这样做也没有.

    Thread thxMonitor = new Thread(MonitorQueue);
    void StartThread() {
        thxMonitor.Start();
    }
    
    void MonitorQueue(object obj) {
        var conn = new SqlConnection(connString);
        conn.Open();
        var cmd = conn.CreateCommand();
        cmd.CommandTimeout = 0; // forever and ever
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM SBQ)";
    
        var dataTable = new DataTable();
        var da = new SqlDataAdapter(command); …
    Run Code Online (Sandbox Code Playgroud)

.net c# multithreading .net-3.5

16
推荐指数
3
解决办法
3万
查看次数

ASP调试 - 点击断点然后中止当前请求的执行

我正在使用visual studio 2013调试ASP页面.

所以,我设置了一个断点,断点被击中,执行被搁置.

现在,我只想中止当前请求 停止执行当前请求的代码(当它已经达到断点时处于保持状态),而不必停止调试并再次运行项目.

这似乎太简单了,但我还没弄明白该怎么做.

让我明确指出单击"重启" 不是我需要的,因为"重启"只是停止项目并再次运行的快捷方式.

asp.net debugging visual-studio

6
推荐指数
1
解决办法
513
查看次数

如何杀死C#线程?

我有一个线程,在我们的(旧)SQL服务器上查找数据.

当数据进入时,我将信息发布到模态对话框 - 在进行所有这些处理时,用户不能也不应该做任何其他事情.模态对话框只是让他们看到我正在做某事并阻止他们同时运行另一个查询.

有时(很少)当代码调用SQL服务器时,服务器没有响应(IT将其关闭以进行维护,LAN线被切断,或者PC不在网络上)或执行查询的人时间不多了.因此,模态对话框确实有一个取消按钮.

Thread对象(System.Threading.Thread)有IsBackground=true.

当有人点击取消时,我会调用我的KillThread方法.

注意:我不能在此类中使用BackgroundWorker组件,因为它与某些Windows Mobile 5代码共享,而WM5没有BackgroundWorker.

void KillThread(Thread th) {
  if (th != null) {
    ManualResetEvent mre = new ManualResetEvent(false);
    Thread thread1 = new Thread(
      () =>
      {
        try {
          if (th.IsAlive) {
            //th.Stop();
            // 'System.Threading.Thread' does not contain a definition for 'Stop'
            // and no extension method 'Stop' accepting a first argument of type
            // 'System.Threading.Thread' could be found (are you missing a using
            // directive or an assembly reference?) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

multithreading ×5

c# ×4

.net ×3

.net-3.5 ×1

asp.net ×1

debugging ×1

java ×1

visual-studio ×1