【问题标题】:Request an URL don't want to wait till for that response请求一个 URL 不想等到那个响应
【发布时间】:2017-06-23 08:05:02
【问题描述】:

我需要点击一个 URL,但不想等待响应。只需请求一个 URL(cron) 来更新数据。我使用下面的代码等待响应到来。请澄清。

string url = "http://exampleurl";
WebRequest request = HttpWebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseText = reader.ReadToEnd();

【问题讨论】:

  • 如果您不需要回复,为什么要阅读它? (第 3-5 行)
  • 您可以删除最后两行,一旦您调用GetResponse(),就会发出对 URL 的请求并且您的 cron 将被触发。
  • 我尝试删除 StreamReader reader = new StreamReader(response.GetResponseStream());字符串 responseText = reader.ReadToEnd();这两行,但它也会等到响应到来。
  • 你可以尝试把它放在一个线程中,这样你就不需要等待了[这可以帮助你。 ](dotnetperls.com/thread)

标签: ssis-2008


【解决方案1】:

假设您不需要响应:

在方法完成之前,这一行不会让程序运行下一行:

WebResponse response = request.GetResponse();

因此,您可以将该行作为单独的任务运行,以避免代码阻塞。即使任务 ( getResponse() ) 尚未完成,您的代码也会继续运行。

string url = "http://exampleurl";
WebRequest request = HttpWebRequest.Create(url);
var t = Task.Run(() => request.GetResponse() );

Documentation for Task.Run() 以便更好地理解。

编辑: 如果您运行旧版本的 .net/c# task.run 不起作用,you can use Task.Factory.StartNew instead

【讨论】:

  • 似乎错误“Microsoft.sqlserver.Runtime.task 不包含运行定义”。
  • @Gnanaskandhan 您应该使用命名空间:System.Threading.Tasks。请参阅我链接的文档,其中显示了您需要的命名空间。
  • 补充说,似乎同样的错误“'Microsoft.SqlServer.Dts.Runtime.Task'不包含'Run'的定义”。
  • @Gnanaskandhan 你能试试 System.Threading.Tasks.Task.Run(() => request.GetResponse() );还有你用的是哪个版本的c#?
  • SSIS C# 脚本 .. 我使用的是 2008 R2
猜你喜欢
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多