程序中设计文件的创建于读写,但是有时会出现XX文件被占用无法读取的问题,这个问题出现的概念很小,在不同的机子上出现的概率也不同,而且毫无规律,似乎是随机出现的错误,请教一下可能是什么问题?
我可不可以在读取文件的时候判断一下文件是否被占用,如果被占用就把该占用关闭?具体怎么实现呢?
我可不可以在读取文件的时候判断一下文件是否被占用,如果被占用就把该占用关闭?具体怎么实现呢?
解决方案 »
- 因为数据库正在使用,所以未能获得对数据库的排它访问权。哪位知道怎么解呀?
- 删除问题!!
- 有哪位做过在自定义分页控件的基础上添加导出Excel功能的(winform)
- 关于 dll参数中有out的问题?急!!?
- 如何在路由器上把IPTV的连接关掉?
- 读取XML节点问题··
- 在.NET中有没有一种通用的控制字符呢?
- MDI问题,实在是无法解决
- WINCE 下Button控件的一个问题,50分送上,求解!
- 我要再DateSet中的DateTable删除一列再绑定到DataGrid里,为什么用ds.Tables[0].Columns.RemoveAt(1);老是出错,该怎么做?
- 菜鸟求教listview刷新问题
- C# windows服务优化问题
lock(obj)
{
// 操作文件
}
{打开}
catch(Exception ex)
{关闭}
如果是打开的话次打开肯定会有异常,
用catch()捕捉到异常后关掉它
保证每次打开文件使用完后关闭在finally中关闭打开的文件
public static extern IntPtr _lopen(string lpPathName, int iReadWrite); [DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject); public const int OF_READWRITE = 2;
public const int OF_SHARE_DENY_NONE = 0x40;
public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
private void button2_Click(object sender, EventArgs e)
{
//cls_DataBaseForAdoInfo dbinfo = new cls_DataBaseForAdoInfo();
//string str = string.Format("exec spp_Service_Precursortest '{0}','{1}','{2}'", textBox1.Text.Trim(), textBox2.Text.Trim(), textBox5.Text.Trim());
//string ret = dbinfo.ExecProc_Test(str);
//textBox6.Text = textBox6.Text + ret.Trim();
string vFileName = @"c:\a.ini";
if (!File.Exists(vFileName))
{
MessageBox.Show("文件都不存在,你就不要拿来耍了");
return;
}
IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
if (vHandle == HFILE_ERROR)
{
MessageBox.Show("文件被占用!");
return;
}
CloseHandle(vHandle);
MessageBox.Show("没有被占用!");
}