c# – 将二进制文件保存到DB
发布时间:2020-12-16 01:54:15 所属栏目:百科 来源:网络整理
导读:我知道这个主题有很多主题,我尝试从VB实现(翻译) this one到C#. 表fileContainer = {string FileName,二进制文件} 这是我的尝试: partial void FileContainersAddAndEditNew_Execute(){ Dispatchers.Main.BeginInvoke(() = { OpenFileDialog openDialog = n
我知道这个主题有很多主题,我尝试从VB实现(翻译)
this one到C#.
表fileContainer = {string FileName,二进制文件} 这是我的尝试: partial void FileContainersAddAndEditNew_Execute() { Dispatchers.Main.BeginInvoke(() => { OpenFileDialog openDialog = new OpenFileDialog(); if (openDialog.ShowDialog() == true) { using (System.IO.FileStream fileData = openDialog.File.OpenRead()) { long fileLen = fileData.Length; if (fileLen > 0) { Byte[] fileBArray = new Byte[fileLen]; fileData.Read(fileBArray,fileLen); fileData.Close(); FileContainer fc = this.FileContainers.AddNew(); fc.File = fileBArray; fc.FileName = openDialog.File.Extension.ToString().ToLower(); } } } }); } 但是这行代码失败了: FileContainer fc = this.FileContainers.AddNew(); 出现此错误: IVisualCollection<T>.AddNew() should not be called from UI Thread. 我有点困惑.我想: Dispatchers.Main.BeginInvoke(() => 防止这种情况发生.或者我做错了吗? 我注意到的另一件事是VB代码使用: filenLen-1 但我试图这样做是出界的.他们也没有将它转换为int,但.Read不需要花费很长时间作为参数. 解决方法
openFileDialog.ShowDialog()不返回bool值,也不能在if语句中使用. openFileDialog.ShowDialog()将打开该对话框.据我所知,执行暂停,直到您关闭对话框并且没有理由检查它是否打开.
filenLen-1 using (System.IO.FileStream fileData = openDialog.File.OpenRead()); long fileLen = fileData.Length; 应该 filenLen--; using (System.IO.FileStream fileData = System.IO.File.OpenRead(openDialog.FileName)) int fileLen = int.Parse(fileData.Length.ToString()); fileData.Read(fileBArray,fileLen);需要fileLen是一个整数.尽管fileData返回long,但这可能会导致问题. 至于调用问题,我必须确切知道你想要做些什么来帮助你.也许我们可以避免调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容