使用php后冻结上传文件
本文关键字:文件 冻结 php 使用 | 更新日期: 2023-09-27 18:26:08
我使用php脚本和C#将文件从Windows中的文件夹上传到Web服务器目录。然而,当上传开始时,应用程序会冻结,这是可行的。
private void submitExam_Click(object sender, EventArgs e)
{
// loop through and upload our sound bits
string[] files = System.IO.Directory.GetFiles(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) + "''wav", "*.wav", System.IO.SearchOption.AllDirectories);
foreach (string soundBit in files)
{
System.Net.WebClient Client = new System.Net.WebClient();
Client.Headers.Add("Content-Type", "audio/mpeg");
byte[] result = Client.UploadFile("http://website.com/uploadFiles.php", "POST", soundBit);
}
processing f2 = new processing();
f2.MdiParent = this.ParentForm;
f2.StartPosition = FormStartPosition.CenterScreen;
f2.Show();
this.Hide();
}
在C#应用程序中,当单击提交按钮时,上传开始,它会显示一个新的表单页面,其中显示一条消息,说明文件正在上传。我遇到的问题是,当按下提交按钮时,processing
表单在大约10秒左右的时间内不会显示,直到上传完成或接近完成。
是否有任何方法可以在上传文件的同时显示处理页面而不冻结应用程序?
应用程序正在冻结,因为您的上传操作阻塞了主UI线程,该线程需要始终保持其运行循环始终运行的状态。
您还需要确保上传操作完成后,您在主线程上更新了UI。
主线程有时也称为UI线程,是Windows窗体应用程序用来处理用户输入、响应事件、更新UI控件等的线程。
冻结行为是因为你的上传操作需要大约10秒才能完全上传文件,因此在这个过程完成之前,你的应用程序无法响应。如果上传需要20分钟,你的应用程序将冻结20分钟。
有关如何避免此问题的更多信息,请参阅本文:在不阻塞UI线程的情况下执行一系列操作