文件操作的有关问题
文件操作的问题.
我用下面这种方法,在两个线程中同时对一个文件进行打开操作.结果一个线程运行正常,另一个线程报错.错误提示是:对象打开时,不允许操作.如何才能让两个线程同时打开一个文件,并对一个文件进行只读操作.
CStdioFile file;
if(!file.Open(filename,CFile::modeRead|CFile::typeText
|CFile::shareDenyNone))
{
::MessageBox(hwnd, "文件打开失! ", "sms ",MB_OK|MB_ICONEXCLAMATION);
return 1;
}
------解决方案--------------------
我用的CFile类实现的 是可以让多个线程同时打开一个文件
代码入下:
线程函数:
DWORD WINAPI openFile(void * p)
{
CFile file;
if(file.Open( "c:\\test.html ",CFile::modeRead|CFile::shareDenyNone))
AfxMessageBox( "file open success! ");
while(flag)
{
Sleep(200);
}
return 0 ;
}
事件:
void CTttDlg::OnButton1()
{
DWORD dwThreadId;
HANDLE h1 = ::CreateThread(NULL,0,openFile,this,0,&dwThreadId);
}
------解决方案--------------------
估计你另一个没有shareDenyNone
------解决方案--------------------
CStdioFile fRealDataFile;
if( fRealDataFile.Open(strFileName,CFile::modeRead|CFile::shareDenyNone) == FALSE )
{
return FALSE;
}
我的程序中也是这样用的,没有问题啊
一个程序通过电话线接收到数据写这个文件
在这个程序中只读
是对的哟
我用下面这种方法,在两个线程中同时对一个文件进行打开操作.结果一个线程运行正常,另一个线程报错.错误提示是:对象打开时,不允许操作.如何才能让两个线程同时打开一个文件,并对一个文件进行只读操作.
CStdioFile file;
if(!file.Open(filename,CFile::modeRead|CFile::typeText
|CFile::shareDenyNone))
{
::MessageBox(hwnd, "文件打开失! ", "sms ",MB_OK|MB_ICONEXCLAMATION);
return 1;
}
------解决方案--------------------
我用的CFile类实现的 是可以让多个线程同时打开一个文件
代码入下:
线程函数:
DWORD WINAPI openFile(void * p)
{
CFile file;
if(file.Open( "c:\\test.html ",CFile::modeRead|CFile::shareDenyNone))
AfxMessageBox( "file open success! ");
while(flag)
{
Sleep(200);
}
return 0 ;
}
事件:
void CTttDlg::OnButton1()
{
DWORD dwThreadId;
HANDLE h1 = ::CreateThread(NULL,0,openFile,this,0,&dwThreadId);
}
------解决方案--------------------
估计你另一个没有shareDenyNone
------解决方案--------------------
CStdioFile fRealDataFile;
if( fRealDataFile.Open(strFileName,CFile::modeRead|CFile::shareDenyNone) == FALSE )
{
return FALSE;
}
我的程序中也是这样用的,没有问题啊
一个程序通过电话线接收到数据写这个文件
在这个程序中只读
是对的哟