[英]File doesn't upload windows form C#
我創建了一個 Windows 服務和一個安裝項目。 我創建了一個 Windows 窗體來為我的安裝項目上傳一個文件。
我的問題是當我點擊我的文件上傳它時,我的文件沒有上傳。 而且表格也不會關閉。
我的 Windows 服務的 ProjectInstaller
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
Form1 validationForm = new Form1(Context.Parameters["TARGETDIR"]);
validationForm.ShowDialog();
}
窗體
private static string folderToUploadFile = string.Empty;
public Form1(string folder)
{
InitializeComponent();
folderToUploadFile = folder;
label1.Text = folder;
}
private void button1_Click_1(object sender, EventArgs e)
{
var task = new Thread(() => {
try
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "Dat files |*.dat";
fileDialog.Multiselect = false;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
var filename = fileDialog.FileName;
Task.Run(() =>
{
File.Copy(filename, folderToUploadFile);
this.Close();
});
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
});
task.SetApartmentState(ApartmentState.STA);
task.Start();
task.Join();
}
這對我有用,我進行了以下更改:
你的按鈕點擊應該是這樣的。
try
{
OpenFileDialog fileDialog = new OpenFileDialog();
//fileDialog.Filter = "Dat files |*.dat";
fileDialog.Multiselect = false;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
var fullPath = fileDialog.FileName;
var fileName = Path.GetFileName(fullPath);
var destination = Path.Combine(folderToUploadFile, fileName);
Task.Factory.StartNew(() =>
{
File.Copy(fullPath, destination);
this.Close();
});
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
請注意手動將文件復制到安裝目錄,這意味着它們在卸載后仍然存在,因此您可能希望處理此問題。
編輯:
您實際上並不需要 Task.Factory.StartNew().... Task.Run 應該工作相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.