正在等待方法完成使用C#?
我有一个将文件写入本地磁盘的方法。另一种方法获取该文件并将其上载到sftp服务器。问题是,sftp服务器上的文件是空的。这是我的一小段代码:正在等待方法完成使用C#?,c#,file-io,file-upload,C#,File Io,File Upload,我有一个将文件写入本地磁盘的方法。另一种方法获取该文件并将其上载到sftp服务器。问题是,sftp服务器上的文件是空的。这是我的一小段代码: WriteToLocalFolder(content, filename); WriteToSftpServer(filename, server logon params); 是否在WriteToLocalFolder完成写入之前调用了WriteToSftpServer?如果是,我如何说WriteToSftpServer应该仅在WriteToLocal
WriteToLocalFolder(content, filename);
WriteToSftpServer(filename, server logon params);
是否在WriteToLocalFolder完成写入之前调用了WriteToSftpServer?如果是,我如何说WriteToSftpServer应该仅在WriteToLocalFolder完成文件写入后启动
WriteToLocalFolder在实际代码中如下所示:
public static void WriteToFolder(StringBuilder content, string whereTo)
{
File.WriteAllText(whereTo, content.ToString());
}
所以溪流关闭了,我想
谢谢:-)如果WriteToLocalFolder没有生成单独的线程,这是不可能的。可能您缺少任何方法中的
流.Flush
、流.Close
或流.Dispose
?这取决于WriteToLocalFolder
中的代码,但听起来更有可能是您正在将内容写入文件,而忘记了Flush
写入缓冲区。如果不是这样,请编辑您的问题并添加WriteToLocalFolder
的代码 在WriteToSftpServer
中的代码在WriteToLocalFolder
完成之前不应该出现(因为它似乎不是异步的)。但是,可能是filestream未正确关闭,因此WriteToSftpServer
无法访问它
尝试在文件加载的WriteToSftpServer
内获取断点,查看加载的内容。如果文件加载正确,则始终可以在方法内部“step next”(下一步)查看文件在何处中断
do
{
WriteToLocalFolder(content, filename);
} while ((System.IO.File.Exists(filename) != true));
WriteToSftpServer(filename, server logon params);
此循环将确保在进入下一行之前文件及其内容已存在。WriteToLocalFolder中的代码是否关闭文件?取决于方法是同步还是异步的。是否可以发布
WriteToLocalFolder()的源代码
?问题可能出在WriteToLocalFolder
方法的代码中。我打赌文件流中缺少flush或close方法。你能发布你的代码吗?SFTP传输很可能失败。我来掷硬币,你叫正面还是反面。我也会从这里开始。在该断点处,很容易查看磁盘上的文件,并查看实际尝试传输到远程服务器的内容。