gpt4 book ai didi

c# - 下载按钮不显示

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:58 24 4
gpt4 key购买 nike

我有一个奇怪的问题..

我正在制作网页的缩略图!我从未使用过线程,但遇到了问题

我正在使用下面的代码

protected void GetScreenshot_Click(object sender, EventArgs e)
{
path = Server.MapPath(FolderID);
Thread webBrowseThread = new Thread(new ThreadStart(PerformWebBrowseOp));
webBrowseThread.SetApartmentState(ApartmentState.STA);
webBrowseThread.Start();
}

protected void PerformWebBrowseOp()
{
if(searchedword!='')
{
Directory.CreateDirectory(path);
}

string path1 = Mypath + "/image.png";
GeneateScreenshot gn = new GeneateScreenshot();
Bitmap thumbnail = gn.GenerateScreenshot("http://www.google.com/search?hl=en&q=" + Searchedword, 1024, 768);
FileStream imageStream = new FileStream(path1, FileMode.Create);
thumbnail.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png);
imageStream.Close();
downloadbutton.Visible=true;
}

现在我的问题是在创建缩略图时我有一个要显示的下载按钮。但是由于某种原因,下载按钮没有生成或不可见!

我尝试放置在 getscreenshot_click 中,但它甚至在线程开始运行之前和缩略图创建之前就已创建。

有人可以帮我解决这个问题吗?

最佳答案

简短的回答是您不想为网页执行此操作。该网页的设计使得当点击处理程序完成时它会继续页面生命周期,并且在 ASP 处理了一堆它自己的东西之后它会将响应发送给客户端。在您的后台线程完成之前,正在发送该响应(或至少已完成,因此无法对其进行编辑)。

在 Web 环境中,如果您正在分离另一个线程,您需要假设您将无法在另一个线程中为同一请求编辑任何内容。如果您足够快地执行此操作,或者如果您的服务器速度非常慢,那么它可能可以工作,但通常不会,而且您永远不能假设它会。

我的猜测是您根本不想创建另一个线程,并且您希望用户等到图像保存后再将控制权返回给用户。

如果接收请求对您来说真的很重要,请执行一些操作,向用户发送响应,然后在您的后台线程发生某些事情后再次更新页面,这是可能的,但是这是很多工作。 (而且真的会耗尽服务器的资源。)Here是 MSDN 上的一个例子,但我的猜测是,在这种情况下,它是矫枉过正的,你最好不要打扰。

编辑:根据您的评论,代码需要在另一个线程中,因为它目前不在 STA 线程中。因此,解决方案是在您的点击事件处理程序中加入该线程,以便您在发送响应之前等待它完成。

关于c# - 下载按钮不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com