嗨,大家好,我写了下面的代码来返回pdf报告。该代码基于多线程示例代码。你们能提供一些关于它的反馈,我是新来的多线程。 非常appriciate! 杰弗里多线程接受值和返回值
public delegate void StreamResultDelegate(Stream streamResults);
public class GenerateReport
{
private StreamResultDelegate callback;
public GenerateReport(StreamResultDelegate _callback)
{
callback = _callback;
}
public void ThreadProc()
{
if (callback != null)
{
callback(Testing());
}
}
public Stream Testing()
{
var reportsService = new ReportsService();
var nameValueCollection = new NameValueCollection();
byte[] pdfReportContents = reportsService.GetReport("/Rocket.Reports/RocketReport", nameValueCollection);
var stream = new MemoryStream(pdfReportContents);
return stream;
}
}
//以下
[HandleError]
public class HomeController : Controller
{
private Stream streamTesting = null;
public void StreamResultCallBack(Stream s)
{
streamTesting = s;
}
public FileStreamResult GeneratePdfReport()
{
var g = new GenerateReport(_callback: new StreamResultDelegate(StreamResultCallBack));
var t = new Thread(new ThreadStart(g.ThreadProc));
t.Start();
t.Join();
HttpContext.Response.AddHeader("content-disposition", "attachment; filename=Rockets_List_Printout.pdf");
return new FileStreamResult(streamTesting, "application/pdf");
}}
但在他的情况下,它仍然是无用的,因为他只是在做1两件事。 – ZippyV 2010-12-18 12:59:37
至少他不会阻止线程,而生成报告=) – 2010-12-18 13:32:31
嗨ZippyV,你是对的this.This请求只有一件事是产生报告。 – jeffreychi 2010-12-19 04:14:24