【发布时间】:2020-01-31 11:39:24
【问题描述】:
我创建了一个 Windows 服务和一个安装项目。 我创建了一个 Windows 窗体来为我的安装项目上传文件。
我的问题是当我点击我的文件上传时,我的文件没有上传。 而且表单也不会关闭。
我的 windows 服务的 ProjectInstaller
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
Form1 validationForm = new Form1(Context.Parameters["TARGETDIR"]);
validationForm.ShowDialog();
}
Windows 窗体
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();
}
【问题讨论】:
-
您看到任何错误吗?尝试删除 File.Copy 和 this.Close() 周围的 Task.Run
-
@RyanThomas 没有错误,如果我删除 Task.Run 我的 windows 窗体的状态没有响应
-
不使用 Task.Run - 如果您使用 Task.Factory.StartNew,它是否有效?另外我认为您可能需要在 folderToUploadFile 的末尾添加一个文件名
-
另外请注意,手动将文件复制到安装目录意味着它们不会被卸载删除。
标签: c# winforms windows-services setup-project openfiledialog