使用流.实现即发即弃的REST调用
本文关键字:REST 调用 实现 | 更新日期: 2023-09-27 18:04:07
我正在尝试调用RESTful服务,但我甚至不想等待响应(200/404/500)。
我知道这可能听起来微不足道,但是,我有一个独特的场景,出于某种原因需要这样做。我的请求是这样的:
using (Stream stream = webRequest.GetRequestStream())
{
stream.BeginWrite(postData, 0, postData.Length, null, null);
}
这似乎工作,但感觉不对。这是不受欢迎的行为吗?如果有,首选的方法是什么?
Thanks in advance
参见MSDN:
EndWrite必须在每次调用BeginWrite时调用一次。你可以使用与BeginWrite相同的代码,也可以通过传递给BeginWrite的回调来实现。
所以本身,不-这可能会导致泄漏。此外,如果您启动异步写入,并立即处置stream
,则写入几乎肯定是到已关闭/已处置的流(此时第二个线程甚至不太可能涉及,更不用说完成写入了)。也许启动Task
或ThreadPool
项目来做常规的Write
?
ThreadPool.QueueUserWorkItem(delegate {
using (Stream stream = webRequest.GetRequestStream()) {
stream.Write(postData, 0, postData.Length);
}
});