sách gpt4 ăn đã đi

c# - 如果我之后直接使用 `Response.Flush()` `Response.End()`有意义吗?

In lại Tác giả: Walker 123 更新时间:2023-11-30 21:05:05 37 4
mua khóa gpt4 giày nike

我过去常常通过刷新和结束来结束对客户端的传输,如下面的代码所示。

Response.Flush();
Response.End();

但是,Response.End() 将缓冲内容刷新到客户端让我印象深刻。那么在序列中同时使用两者有什么意义吗?

câu trả lời hay nhất

简而言之,不是,但两者之间存在重要区别:

Response.Flush() 对于在所有处理完成之前写入部分响应很有用(即,如果禁用响应缓冲)。 Flush() 之后的任何代码都将继续执行,任何之前的 Response.Write() 都将刷新到客户端。

Response.End() 更残酷一点......它不仅会中止当前线程,而且会抛出 ThreadAbort 异常并终止当前请求。除非您正确处理异常,否则 Response.End() 之后的任何代码将永远不会出现。

正如您所指出的,End() 无论如何都会刷新您的缓冲内容。在某些情况下,End() 实际上会在内部调用 Flush(),具体来说,如果上下文不可取消:

public void End()
{
if (this._context.IsInCancellablePeriod)
{
InternalSecurityPermissions.ControlThread.Assert();
Thread.CurrentThread.Abort(new HttpApplication.CancelModuleException(false));
}
else if (!this._flushing)
{
this.Flush();
this._ended = true;
if (this._context.ApplicationInstance != null)
{
this._context.ApplicationInstance.CompleteRequest();
}
}
}

关于c# - 如果我之后直接使用 `Response.Flush()` `Response.End()`有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894164/

37 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress