Foxtable(狐表)用户栏目专家坐堂 → WriteAllText出现“文件被另一进程使用”,可能什么问题?


  共有2670人关注过本帖树形打印复制链接

主题:WriteAllText出现“文件被另一进程使用”,可能什么问题?

帅哥哟,离线,有人找我吗?
wfkbabro
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:2425 威望:0 精华:0 注册:2011/10/21 17:07:00
WriteAllText出现“文件被另一进程使用”,可能什么问题?  发帖心情 Post By:2016/4/25 11:23:00 [只看该作者]

WIN8,64位,调试代码时输出了很多内容到日志文件,比较密集。

FileSys.WriteAllText("c:\11.txt","调试内容", true)

然后就出错了:


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160425111829.png
图片点击可在新窗口打开查看

 

另一台电脑WIN7,64位,同样的代码不出错。

 

 

两台电脑版本均为:  2014-11-11

 

顺便问下目前最新的版本,版本号在主界面有地方看了吗?谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/25 11:26:00 [只看该作者]

加上try Cacth看看

 

http://www.foxtable.com/help/topics/2070.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
wfkbabro
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:2425 威望:0 精华:0 注册:2011/10/21 17:07:00
  发帖心情 Post By:2016/4/25 11:32:00 [只看该作者]

以下是引用大红袍在2016/4/25 11:26:00的发言:

加上try Cacth看看

 

http://www.foxtable.com/help/topics/2070.htm

 

谢谢,已明确是 WriteAllText 出的错,

但用try 只能跳过错误,还是不明白怎么纠错

谢谢,

望指点。

 

Try
   代码一
Catch ex As Exception
   出错执行代码二
End Try
不出错执行后续代码三


 回到顶部
帅哥哟,离线,有人找我吗?
wfkbabro
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:2425 威望:0 精华:0 注册:2011/10/21 17:07:00
  发帖心情 Post By:2016/4/25 11:34:00 [只看该作者]

函数debugLog 里面,没有互锁的逻辑,就是WriteAllText  追加写入

是不是WriteAllText 处理多个写入任务时出错了?要重新安装或注册什么控件吗?谢谢。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/25 11:34:00 [只看该作者]

 如果报错,就是这个时候.txt文本正在被别的程序打开和使用中。

 

 你可以弄一个循环,不断尝试写入即可,如代码

 

do while true
    try
        FileSys.WriteAllText("d:\test.txt", "abcd", True)
        Exit Do
    catch ex As exception
       
    End try
Loop

 


 回到顶部
帅哥哟,离线,有人找我吗?
wfkbabro
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:2425 威望:0 精华:0 注册:2011/10/21 17:07:00
  发帖心情 Post By:2016/4/25 13:23:00 [只看该作者]

试了。可以确定问题如下:

1.WriteAllText 用命令测试时,循环写入没问题,比如写入abcd

2.WriteAllText 用在程序中写文件文件时,即便写入abcd,也要出问题。

3.在WIN8 64位出错,在另一台WIN7 64位不出错,在另一台WIN7 32位也不出错

4.不知道怎么处理了。幸好在客户那没出岁暮。

 

测试代码:

Vars("P_strLogFile") = "C:\FoxtableDebug日志.txt"
'写入C盘不报错,但没有新文件出来。
Vars("P_strLogFile") = "d:\FoxtableDebug日志.txt"


dim i,t1
t1 = Vars("P_strLogFile")
for i=1 to 1000
    try
        FileSys.WriteAllText(t1, i & ":abcd" & vbcrlf, True)

    catch ex As exception
       
    End try
next

msgbox("ok")


此主题相关图片如下:qq截图20160425130529.png
按此在新窗口浏览图片

此主题相关图片如下:qq截图20160425130548.png
按此在新窗口浏览图片
[此贴子已经被作者于2016/4/25 13:23:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/25 14:22:00 [只看该作者]

 那试试这样

 

Do While True
    try
        Dim path As String = "d:\test.txt"
        If Not io.File.Exists(path) Then
            Dim myfile As New IO.FileInfo(path)
            Dim fs As IO.FileStream = myfile.Create()
            fs.Close()
        End If
        Dim sw = io.File.AppendText(path)
        sw.WriteLine("12345678")
        sw.Flush()
        sw.Close()
       
        Exit Do
    catch ex As exception
        msgbox(ex.message)
    End try
Loop

 


 回到顶部