ฉันกำลังมานานกำลังฟังก์ชันเป็นภาพพื้นหลังงานอยู่ของฉัน asp.net โปรแกรม ก่อนที่งาน completes หลักของเธรดออกจาก(ฉันอยากให้มันเป็นอย่างนั้นเท่านั้นตั้งแต่ถ้าผมจะขอใช้ห้องรอคำสั่งคำค้นและทำให้หลักเธรดรอจนกว่าเบื้องหลังงาน completes ฉันเข้าใจของพร็อกซีเกิดข้อผิดพลาดกับข้อความ
เกิดข้อผิดพลาดของพร็อกซี
พร็อกซีเซิร์ฟเวอร์ได้รับการไม่ถูกต้องการตอบสนองจาก upstream เซิร์ฟเวอร์ตั้งแต่เบื้องหลังงานนานเกินไป
แต่ครั้งหนึ่งหลังจากที่งานเสร็จสมบูรณ์ก็เหมือนกัฉันสามารถที่จะปรับปรุงหน้าเว็บโดย redirecting เดียวกันกับที่หน้าหรือไม่ฉันสามารถใช้แทนที่ส่วนติดต่อผู้ใช้ขอ. มันมีทางที่จะปรับปรุงส่วนติดต่อผู้ใช้หลังจากเธรดหลัก completes กประหารชีวิต
ของรหัสผ่านแบบนี้:
protected void btnImport_Click(object sender, EventArgs e)
{
var task = ImportThread();
if (task.IsCompleted)
{
DisplaySuccess("Import success");
}
else
DisplayError("Import failed");
}
private async Task<bool> ImportThread()
{
try
{
var success = await Task<bool>.Run(() => new Manager().Import().ConfigureAwait(false);
if (task.IsCompleted)
{
DisplaySuccess("Import success");
}
else
{
DisplayError("Import failed");
}
return true;
}
ที่อยู่เหนือ async งานอยู่ที่วิธีการด้านล่างซึ่งเป็นของขวัญอยู่ในอีกห้องเรียน
public bool Import()
{
// some operations here
return true;
}
หลังจากเรื่องนี้วิธีการ completes ที่ควบคุมกลับมาทางกลับทางเดียวคือทาง ImportThread()
แต่กฎเขียนอยู่ที่นั่นเพื่อยกเลิกส่วนติดต่อผู้ใช้ไม่ได้กำลังปรับปรุงส่วนติดต่อผู้ใช้ขอ. ฉันต้องการจะปรับปรุงส่วนติดต่อผู้ใช้กับสถานะของการนำเข้า แล้วก็จาก ImportThread
ควบคุมไม่ได้ต้องกลับไปคลิกที่ปุ่มเหตุการณ์วิธีการเหมือนกัน
ได้โปรดช่วยฉันกับมีทางที่จะปรับปรุงส่วนติดต่อผู้ใช้ของสถานะของการนำเข้า
ข้อควรจำ:ฉันพยายามใช้ Redirect.Response
ใน ImportThread()
ต้องการเรียกปรับปรุงหน้าแต่นั่นไม่ได้ทำงาน