【问题标题】:Calling a C# method, and make it take 10 seconds to return调用 C# 方法,并使其返回需要 10 秒
【发布时间】:2009-01-02 15:35:34
【问题描述】:

通过 Web 服务 (WCF),我希望端点需要 10 秒才能完成。

有没有办法我可以在方法上做一个thread.sleep(10);?

【问题讨论】:

  • System.Threading.Thread.Sleep(10000);
  • 请澄清您的问题 - 为什么您不能让您的方法休眠?
  • 我似乎找不到 Thread 方法,让我完全限定它对不起!
  • Thread 不是方法,它是 System.Threading 命名空间中的一个类,如 Arjan 在第一条评论中所示。 Sleep 是 Thread 类的静态方法。

标签: c# .net wcf multithreading


【解决方案1】:

您可以创建一个包装器方法来执行适当的睡眠。

Thread.Sleep(TimeSpan.FromSeconds(10))

【讨论】:

  • 请注意,这将休眠大约 10 秒。在较慢的机器上,睡眠定时器的精度可以是多个线程切片 ~50 毫秒。
【解决方案2】:

启动一个休眠 10 秒的新线程,然后返回,这样方法运行所需的时间不会增加 10 秒

using System.Threading;

public static WCF(object obj) 
    {
        Thread newThread = 
            new Thread(new ThreadStart(Work));
        newThread.Start();

        //do method here

        newThread.Join();
        return obj;

    }

    static void Work()
    {
        Thread.Sleep(10000);
    }

【讨论】:

    【解决方案3】:

    如果您的意思是不更改 WCF 调用的另一端(服务器端)的代码,(因为如果您可以更改那里的代码,那么答案很明显),

    然后没有..

    【讨论】:

      【解决方案4】:

      如果这只是为了测试,您可以让代理类指向一个模拟超时的网络代理。使用Fiddler,您可以编写延迟 10 秒的请求/响应脚本,然后通过设置“代理”属性让代理类使用 Fiddler 发出 Web 服务请求:

      IWebProxy proxy = new WebProxy("http://localhost:8888", true);
      webService.Proxy = proxy;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 2017-02-18
        • 2020-04-02
        • 1970-01-01
        相关资源
        最近更新 更多