窗口关闭时,调用TcpListener对象Close时偶尔卡死,有没有遇到过的! 5C
                    try
        {
            //监听线程退出
            if (threadListener != null)
            {
                evtExit.Set();
                threadListener.Join();
            }
            //所有连接端口
            clientPool.Clear();
            //关闭监听
            if (socketListener != null)
            {
                                    **//通过日志看到程序卡在这里**
                socketListener.Stop();
                socketListener.Server.Dispose();
            }
            TaskbarNotifier.CloseMessage();
        }
        catch (SocketException ex)
        {
            WriteLog(ex.ToString());
        }

2个回答

是不是server已经提前关闭了?如果在socketListener != null判断时TCP链接还在,而接下来服务端已经终止了,监听端口会有类似尝试连接的动作,这个动作在超时之前的现象类似于卡死。和数据库连接类似

u013020453
1896 socketListener定义没有写,它就是TcpListener,这就是服务端了
大约一年之前 回复

难道是windows server? 你关闭窗口不会是关闭服务器的运行窗口吧
windows不清楚 但linux除非你Kill -9 否则是会等待所以代码执行完毕的
windows关闭窗口估计是直接杀死进程, 类似于Kill -9 这种情况下是无法保证线程关闭顺序的
如果子线程先关闭,那么你这个主线程再去close是会挂掉
建议不要关闭窗口来杀死程序,而是写一个closeServer的接口,按照自己想要的顺序去关闭服务器

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
vs2008关闭解决方案时卡死
我是用的win7旗舰版系统,上面装了vs2008,并打了sp1的补丁。我用它打开我正在做的一个开发项目非常慢,经常出现以下问题:rn1、进入设计视图时卡死,并有时自动重启。rn2、即使进入了设计视图,点击调试时有时卡死并重启。rn3、每次关闭解决方案时或者退出vs时直接卡死了。rnrn为了解决上面的问题,我重装过三次系统,但是都没有解决,真快被急疯了。在这样拖下去可能任务都完成不了。各位大虾们有们又遇到过这种情况。请指点一下。rnrn补充一下我系统里装的一些其他软件:ArcGIS(我做的是二次开发),MapGIS,DevExpress(我做的这个项目用到了这个第三方控件),SqlServer2008.
调用WCF时 偶尔报错
WCF发布在服务器A上,rn网站程序发布在服务器B上rnrn网站程序调用WCF接口时候会不预期的报错rnrn错误内容rn[color=#FF0000]通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。[/color]rnrn我知道是因为channel出错,但是该如何避免这种错误,为什么是偶尔出错,而不是总是出错?
winform调用close窗口不关闭
这个或者有很多原因,但有一比较隐蔽一点的原因就是,自己设置了DialogResult为None的话窗口关闭是不会做任何事情的,有些人以为none就是返回的DialogResult就是none,其实并不是这样,none会导致窗口关闭不了的,而且什么都没有表现出来
当窗口关闭时
我想在窗口关闭时,删除session的值,怎么办?help
窗口关闭时崩溃了
先简单说一下工程的情况吧。rnrnMFC基于对话框,1个父窗口dlg1,1个tab,tab有2个页面,分别为dlg11、dlg12。dlg12中开了一个定时器。rnrn关闭窗口时崩溃了。推栈如下图:rn[img=https://img-bbs.csdn.net/upload/201506/27/1435393918_220237.jpg][/img]rnrn请大神帮忙看看这是什么引起的啊?百度说可能是线程的问题,但我没有多线程啊。rnrn谢谢大神们!
系统关闭时程序有没有调用closing??????
就是关机时rn系统关闭所有程序时rn程序会不会调用Form_Closing??rn还是直接被强制关掉了??
窗口关闭时出错!!
我用了两个窗体,一个logon一个main,在main的shwo里rnprocedure TForm1.FormShow(Sender: TObject);rnbeginrn with fm_logon.Create(self) dorn beginrn ShowModal;rn Free;rn end;rnend;rnrn窗体logon可以显示,但是程序退出时出现异常,为什么?
qq窗口关闭时,偶尔会出现花块,什么原因?
是不是有病毒,或者配置上不当, 或...., 谁知道? 谢谢了!!!!
CFromView窗口关闭时调用哪个函数?
我把对控件的关闭操作放在wm_Close消息的响应函数OnClose中,但是发现这个函数没有被调用。如果我放在OnDestroy中的话,因为控件已经被删除,执行时会出错,应该怎么办?请高手指点!
C#打开一个新窗口关闭当前窗口时卡死的问题
这个问题是这样的,有三个Windows窗体(如图,以下主窗体Form1不考虑,只考虑Form2、Form3),现在打开了Form2,我想点Form2的“button1"来打开Form3同时关掉Form2,     但出现如下图的情况,Form2跟Form3两个窗口不断反复出现,卡死了,问题出在哪儿呢。  这是因为Form2用了窗体的FormClosing事件,同时要实现打开新窗关闭当前窗,Form...
C#串口关闭Close()-线程卡死-解决方法
问题很简单: 1.设置isReceiving 标志位,判断串口读取线程是否在占用资源。 2.设置读写超时,防止卡死在Read()命令里本人比较懒, 在代码关键修改位置标了/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/,供大家参考。希望能帮到大家0 0 class CSerial { SerialPort myPor
调用webservice 时.报错,提示:对象关闭时,不允许操作
调用webservice 时.报错,提示:对象关闭时,不允许操作rnrn在.net 1.1的下面开发的,在.net 2.0下报错,不知道是不是.net版本的问题?rn代码如下rnrn#Region " 用户注册"rn _rn Public Function Yhzc(ByVal P As String) As String 'N为用户名,P为用户密码,rnrnrn Dim UserID As String '用户ID号rn Dim cSHA As String '用户哈希密码rn '用哈希密码SHA1算法加密用户密码,并对照数据库中的密码,如果对照成功,返回验证成功的信号rn Dim hashedpwd As String = FormsAuthentication.HashPasswordForStoringInConfigFile(P, "SHA1")rn Dim AdoStr As String = ConfigurationSettings.AppSettings("Adosqlserver").ToString()rn Dim con As New ADODB.Connectionrn Dim rs As New ADODB.Recordsetrn Tryrn con.Open(AdoStr)rn rs.Open("select * from CheckOnlieNameAndPassword where SHA='" & hashedpwd & "'", con, 1, 3)rn If Not rs.EOF Thenrn UserID = rs.Fields("id").Value '用户id号rn cSHA = rs.Fields("SHA").Value '用户哈希SHA1密码rnrn Return "CSCheckNameAndPassword_OK\" & UserID & "\" & cSHArn Elsern Return "CSCheckNameAndPassword_DONOT"rn End Ifrnrn Catch ex As Exceptionrn Return ex.ToStringrn Finallyrn rs.Close()rn con.Close()rn rs = Nothingrn con = Nothingrn End Tryrnrnrnrn End Functionrn#End Region
关闭时调用的函数
在用form_upload/form_QueryUnload写 关闭程序时调用的函数 时经常不会被执行rnrn比如在 windows的进程管理器 中关闭或者 关机rn函数就废掉了,根本就没有被执行,有没有办法克服这一点rn(最好有代码)
有没有办法点击窗口的关闭图标时只是隐藏窗口
点击关闭,并不是关闭窗口,而只是隐藏呢rnrn再另一个窗口里点击可以让它再次显示rnrn点击关闭后,会释放资源,不能再次调用show()rnrn有没有人知道啊
HttpWebResponse对象调用Close方法时阻塞了, 怎么办?
一个用于下载的方法:rnpublic long Download(string uri, int buffersize, string filename, string fileencode)rnrn string encode = "";rn byte[] buf = new byte[buffersize];rn int len = 0;rn long size = 0;rn HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); rn req.AllowAutoRedirect = true;rn using(HttpWebResponse res = (HttpWebResponse)req.GetResponse())rn rn using(Stream sReader = res.GetResponseStream())rn rn using(FileStream sWriter = new FileStream(filename, FileMode.Create))rn rn while((len = sReader.Read(buf, 0, buffersize)) > 0)rn rn sWriter.Write(buf, 0, buf.Length);rn size = sWriter.Position;rn if(size > 512 * 1024)//如果文件尺寸大于512K,则关闭流.rn rn sWriter.Close();rn sReader.Close();//此处阻塞, 查看任务管理器, 发现下载依旧在进行. 何解?rn break;rn rn rn rn rn rn buf = null;rn req = null;rn return size;rn rnrn请知道的大侠指点一二?
疑难杂症:C#调用console.WriteLine()偶尔会卡死
最近做一个工具,C#写的,winform。 发现偶尔会卡死。 debug后定位到了console.WriteLine(),居然是卡在这里。 怀疑是由于多个线程调用没有加锁。 可是加了mutex后依然会出现。这里先记一下,回头解决。 myMutex.WaitOne(); Console.WriteLine(str); myMutex.ReleaseMutex();
处理窗口关闭时的动作?
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)rnrn if(Tag==0)rn Action=caMinimize;rn elsern Action=caFree;rnrn//---------------------------------------------------------------------rnrn为何无论 Tag 为何值,窗口都关闭。rn
窗口关闭时清空事件
WPF写的一个窗口,在窗口关闭时检查一下是否还有没处理的btn.click事件,如果有,清空这些事件。程序怎么写?
窗口关闭时数据保存问题
我在做一个数据库应用程序时,用的是TADOdataset控件,lock type 属性用的是rnltbatchoptimistic,也就是用的batchupdate模式,在窗口关闭时,如何判断缓冲区中是否有数据被改变。我用了Tupdatestatus,但是总感觉不太方便,哪位有更好的办法
多线程窗口关闭时程序崩溃
我在一个子窗口弹出出就启动一个线程去执行,里面有用到子窗口的指针,rnrn如果线程执行到窗口还关闭时是正常的,如果线程还没执行完子窗口就关闭了那么程序就会出错rnrn说内存不能为readrnrn有什么好办法可以判断线程里指向窗口的指针是否可以为readrnrn我用IsBadWritePtr 和IsBadReadPtr还是没作用
对象关闭时,不允许操作?
每次执行完 删除或更新后, 在插入数据是就会提示"对象关闭时,不允许操作"rn有办法解决吗?(因该和插入数据,删除数据,更新数据无关吧)rnrn我是这样插入数据的rnBOOL CWDatabase::AddMachineToTeam(const TCHAR *pszTeam, CList *MachineList, const UINT uState)rnrn tryrn rn VARIANT va;rn POSITION pos = MachineList->GetHeadPosition();rn while(pos)rn rn m_spRecordset->AddNew();rn CString strMachineID = MachineList->GetNext(pos);rn va.lVal = uState;rn va.vt = VT_INT;rnrn m_spRecordset->PutCollect( "MACHINE_TEAM", pszTeam );rn m_spRecordset->PutCollect( "MACHINE_ID", (_bstr_t)strMachineID );rn m_spRecordset->PutCollect( "STATE", va );rn rn m_spRecordset->AddNew();rnrn return TRUE;rn catch( _com_error e )rn rn AfxMessageBox( e.Description() );rn return FALSE;rn rn
对象关闭时,不允许操作??
我用adodb控件调用存储过程然后显示到datagrid里面,代码:rn rn Adodc1.ConnectionString = connectstringrn rn Adodc1.RecordSource = "zl_shouhou_zhiliangfankui '" & Trim(Me.DTPicker1.Value) & "','" & Trim(Me.DTPicker2.Value) & "'"rn rn Adodc1.Refreshrn Set Me.DataGrid1.DataSource = Adodc1rn Me.DataGrid1.Refreshrn提示错误:对象关闭时,不允许操作,rn可是,我没有关闭代码rn存储过程是正确的!rn
对象关闭时,不允许操作
本人想在通用模块中连接数据库,就编写了如下代码:rnrn通用模块:rnPublic conn As New ADODB.ConnectionrnSub Main()rn Dim connstrrn Set conn = New ADODB.Connectionrn Set conn = CreateObject("ADODB.Connection")rn onnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\vb工程\xs.mdb;Persist Security Info=False"rn conn.Open connstrrnEnd Subrnrn窗体中:rnPublic rs As New ADODB.RecordsetrnPrivate Sub Command1_Click()rn Set rs = conn.Execute("select * from class")rn MsgBox "数据库连接成功"rnEnd Subrnrn可是编译的时候出现:对象关闭时,不允许操作rn错误出现的代码是:Set rs = conn.Execute("select * from class")rn请问是怎么回事?
“对象关闭时,不允许操作。”
CkLogin.asprn[code=vb]rn<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>rnrnrnrnrn<%rnif IsHostPost() then ToBack "对不起,提交的参数不正确,请使用IE浏览器登录!"rnDim UserName,UserPwd,ImagesCodernUserName=Request.Form("UserName")rnUserPwd=Request.Form("UserPwd")rnImagesCode=Request.Form("ImagesCode")rn if Trim(UserName)="" then ToBack "对不起,你输入的用户名为空!"rn if Trim(UserPwd)="" then ToBack "对不起,你输入的密码为空,请确认!"rn if NOT IsId(ImagesCode) then ToLink "对不起,请输入您的验证码!","login.asp"rn if Cstr(ImagesCode)<>Cstr(session("checkCode")) then ToLink "对不起,您输入的验证码不正确,请确认!","login.asp"rn if NOT IsComb(UserName) then ToBack "对不起,提交的用户名应该是数字或字母或组合,请确认!"'防止数据恶意注入rn%>rnrn<%rn OpenDataBase 1rn sql="select top 1 * from SysAdmin where AdminName='"&UserName&"'"rn rs.open sql,conn,1,3rn if rs.EOF and rs.BOF then ToBack "对不起,没有找到该用户,请确认被高级管理员删除!"rn if rs("AdminPwd")<>md5(UserPwd) then ToBack "对不起,你输入的密码不正确!"rn if rs("flag")="超级管理员" thenrn '开始修正高级管理员的新闻权限rn Dim SystemRolern SystemRole=""rn sql="select * from bNewsClass"'获取新闻大类的权限rn set rs1=conn.execute(sql)rn do while NOT rs1.EOFrn SystemRole=SystemRole+rs1("B_ClassId")+","rn rs1.MoveNextrn Looprn sql="select * from sNewsClass"'获取新闻小类的权限rn set rs1=conn.execute(sql)rn do while NOT rs1.EOFrn SystemRole=SystemRole+rs1("S_ClassId")+","rn rs1.MoveNextrn Looprn rs1.closern set rs1=nothingrn SystemRole=","+SystemRole+","rn SystemRole=Replace(SystemRole,",,",",")rn rs("root")=SystemRolern rs.updatern end ifrn '检查登陆成功rn Dim IMS_SysUserName,IMS_SmallClassValue,IMS_RoleName,IMS_UserId,IMS_RealName,IMS_BigClassValue,Md5Keyrn IMS_SysUserName=Cstr(UserName)rn IMS_SmallClassValue=Cstr(rs("root"))rn IMS_RoleName=Cstr(rs("flag"))rn IMS_UserId=Cstr(rs("aID"))rn IMS_RealName=Cstr(rs("AdminRealName"))rn '结束rn sql="select top 1 * from SysAdminRole where flag='"&rs("flag")&"'"rn rs.closern rs.open sql,conn,1,1rn if rs.EOF or rs.BOF then ToBack "发生意外,无法找到你的操作权限,请联系设计人员!"rn '找到管理员的目录权限rn IMS_BigClassValue=Cstr(rs("Role"))'当前管理员的目录权限rn '结束rn IoClosern rn Md5Key=IMS_CookieRndString+IMS_SysUserName+IMS_SmallClassValue+IMS_RoleName+IMS_UserId+IMS_RealName+IMS_BigClassValuern Response.Cookies(IMS_ParentCookieName)("SysUserName")=IMS_SysUserName'当前管理员的名字rn Response.Cookies(IMS_ParentCookieName)("SmallClassValue")=IMS_SmallClassValue'当前管理员的新闻发布的权限rn Response.Cookies(IMS_ParentCookieName)("RoleName")=IMS_RoleNamern Response.Cookies(IMS_ParentCookieName)("UserId")=IMS_UserIdrn Response.Cookies(IMS_ParentCookieName)("RealName")=IMS_RealNamern Response.Cookies(IMS_ParentCookieName)("BigClassValue")=IMS_BigClassValue'当前管理员的目录权限rn Response.Cookies(IMS_ParentCookieName)("GuestMd5Key")=md5(Md5Key)rn Session.Abandon()'清除服务器的Session会话rn%>rn rn[/code]rnrnconn.asprn[code=vb]rnrnrn<%rnif NOT Response.IsClientConnected then Response.End()rnDim IMS_DbPathrnrnIMS_DbPath="Data/IncData/"+MyDataNamernrnDim conn,ConnStr,rs,sqlrnSub OpenDataBase(Flag)rn Dim IMS_DbPath_Sub,i,DbPathDivCountrn On Error Resume Nextrn if Not Isnumeric(Flag) thenrn Response.Write "你好,连接配置参数#"+Cstr(Flag)+"有问题,请检查!"rn Response.Endrn end ifrn rn DbPathDivCount=Flag'获取数据库所在目录层数rn rn IMS_DbPath_Sub=IMS_DbPath'获取数据库基本层位置rn rn for i=2 to DbPathDivCount'开始进行数据库层计算rn IMS_DbPath_Sub="../"+IMS_DbPath_Subrn nextrn connstr = "driver=SQL Server;server=localhost;uid=tzfm;pwd=zwz;database=tzfm"rn 'ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(IMS_DbPath_Sub)'使用了Jet为数据驱动程序rn 'ConnStr="DBQ="+Server.MapPath(""&IMS_DbPath_Sub&"")+";DefaultDir=;DRIVER=Microsoft Access Driver (*.mdb);"'使用Access自带的驱动程序rn Set conn = Server.CreateObject("ADODB.Connection")rn Set rs = Server.CreateObject("ADODB.RecordSet")rn conn.open ConnStrrn rn IMS_DbConnOpenInit=True'告诉系统已经打开了数据库rn rn If Err Thenrn rs.closern conn.closern Set rs=nothingrn Set conn = Nothingrn Response.Write " 网站错误提示: 数据库连接错误和相关描述: “" & Err.Description & "” 网聚网络客户服务: 服务热线:0595-22255800 项目组热线:0595-22189800 22519800 22539800 或直接致电:13774851106(沈小姐)! 传真:0595-22255800/0595-22515657 网址:www.woooo.net.cn E-mail:sokia@woooo.net.cn "rn Response.Endrn Exit Subrn End IfrnEnd SubrnrnSub IoClose()rn if Cbool(IMS_DbConnOpenInit) thenrn Set rs=nothingrn Set conn = Nothingrn end ifrnEnd Subrn%>rnrn[/code]rn“对象关闭时,不允许操作。”,代码是否有问题啊?为什么会这样?
对象关闭时,不允许操作???
栏目管理页面,删除栏目时,发生这样的提示,看数据库表中,其实已经删除了。rnrn错误提示:rnrnADODB.Recordset 错误 '800a0e78' rnrn对象关闭时,不允许操作。 rnrn/admin/admin_class.asp,行 14 rnrn[code=VBScript]<%rnaction=request("action")rnrnif action="delclass" thenrnid=request("id")rnif id="" thenrnresponse.Write(" ")rnelsernset rs=server.CreateObject("ADODB.RECORDSET")rnsql="delete * from w_class where id="&idrnrs.open sql,conn,1,3rnrs.update '14行在此rnset rsclass=server.CreateObject("ADODB.RECORDSET")rnsql="delete * from w_class where classtype="&idrnrsclass.open sql,conn,1,3rnrsclass.updaternset rsclass=nothingrnresponse.Redirect("admin_class.asp")rnresponse.End()rnend ifrnend ifrn%>[/code]
对象关闭时不允许操作
下面2段代码rnDim sqls As Stringrnsqls = "select name from cckc"rnText1.Text = sqlsrnTrim (sqls)rnAdodc1.RecordSource = sqlsrnAdodc1.RefreshrnSet DataGrid1.DataSource = Adodc1rn可以正常工作rnAdodc1.Recordset.MoveLastrnAdodc1.RecordSource = "insert into cckc (name,age) values ('wxl',297)"rnAdodc1.Refreshrn出现错误“对象关闭时不允许操作”rn但新添加的数据能添加到数据库表里面,请问为什么rn如果没有“Adodc1.Refresh”就没有错误发生rn但数据库表也不能得到添加rn请指教rn谢谢rn
对象关闭时,不允许操作。
<%rndim ProductIdrnProductId= Request.Form("ProductItems")rnif Cstr(ProductId) <> "" thenrn dim Rs,cmdTextrn Set Rs = Server.CreateObject("ADODB.RecordSet")rn cmdText= "delete from Product where ProductId in ("&ProductId&")" rn Rs.Open cmdText,Conn,3,1rn Rs.deleternelsern Response.Write("没有数据")rnend ifrn%>
对象关闭时不允许操作??????????????????????
一个注册窗体,下面是代码rnPrivate Sub Form_Load()rn Dim exestr As Stringrn exestr = App.Path + "\DB\pms.mdb"rn adopassword.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & exestr & ";Persist Security Info=False"rn adopassword.RecordSource = "select * from [password]"rn adopassword.Refreshrn txtusern.Text = ""rn txtpassword.Text = ""rnEnd SubrnrnrnPrivate Sub cmdok_Click()rn Dim usernumb As Longrn usernumb = 0rn rn If ((txtusern.Text = Null) Or (txtusern.Text = "")) Thenrn MsgBox "对不起!用户名不能为空,请重输!", vbOKOnly + vbExclamation, "错误"rn txtpassword.Text = ""rn txtrpassword.Text = ""rn txtpassword.SetFocusrn rn ElseIf (txtpassword.Text = txtrpassword.Text) Thenrn rn Do While Not adopassword.Recordset.EOFrn If ((adopassword.Recordset("用户号")) > usernumb) Thenrn usernumb = adopassword.Recordset("用户号")rn End Ifrn adopassword.Recordset.MoveNextrn Loop '得到当前最大用户号rn usernumb = usernumb + 1rn adopassword.Recordset.MoveLastrn adopassword.RecordSource = "insert into [password] values ('" & usernumb & "','new','" & txtusern.Text & "','" & txtpassword.Text & "')" rn adopassword.Refresh '这里出现错误"对象关闭时不允许操作"??????????????rn adopassword.Recordset.Updatern adopassword.RecordSource = "select * from [user]"rn adopassword.Refreshrn adopassword.RecordSource = "insert into [user] values ('" & usernumb & "','" & txtusern.Text & " ',,'男',,,,,,,,,)"rn adopassword.Refreshrn adopassword.Recordset.Updatern frm_open.Showrn Unload Mern Elsern MsgBox "对不起!输入的两次密码不相同。请重新输入!", vbOKOnly + vbExclamation, "错误"rn txtpassword.Text = ""rn txtrpassword.Text = ""rn txtpassword.SetFocusrn End IfrnEnd Subrnrnrnrn实际上表里已经有了一条新记录,那这错误为什么会出现?还有怎么解决呢?rn请各位帮下忙,谢谢
对象关闭时,不允许操作。??????????????????????????????????
我没有写一句关闭的你码,为什么出这个错呢???平时都这样写。。。郁闷呀,希望帮忙。。
对象关闭时,不允许操作??????
我在Sql2000里写了一个存储过程,在存储过程建立一个临时表,存储过程的最后,我用“Select * From 临时表”结束,期望该存储过程可以返回临时表中的记录。rnrn可是当我在VB端调用存储过程的时候,却报告rs对象“对象关闭时,不允许操作”,难道临时表一旦随着存储过程的调用结束删除后,连选择出来的记录集合也随着消失了?rnrn是不是这样?如果是,我该怎么返回临时表的记录?如果不是,我哪里出了问题?rnrn下面是我调用的VB代码:rnDim cmd As New ADODB.CommandrnDim rs As New ADODB.RecordsetrnrnWith cmdrn .ActiveConnection = Connrn .CommandText = "dt_GoodsBillGetMX"rn .CommandType = adCmdStoredProcrn .Parameters("@d1").Value = dt1.Captionrn .Parameters("@d2").Value = dt2.Captionrn .Parameters("@GroupID").Value = cboGroup.ItemData(cboGroup.ListIndex)rn Set rs = .ExecuternEnd Withrnrn
对象关闭时,不允许操作!
我自己简单封装了一个数据库操作类:rnrn//头文件rnclass CSql : public CObjectrnrnpublic:rn CSql(const char * pUser = "sa",const char * pPwd = "sa",const char * pHost = "local" );rn virtual ~CSql(void);rn _RecordsetPtr m_rst;rnprotected:rn _ConnectionPtr m_con;rn _CommandPtr m_cmd;rnrn _bstr_t m_strHostname;rn _bstr_t m_strUsername;rn _bstr_t m_strPassword;rn _bstr_t m_strDataBase;rnrn _bstr_t m_strConnect;rn _bstr_t m_strQuery;rnpublic:rn void Sql_SelectDB(const char *pDataBase);rn void Sql_Query(const char *pQuery);rn void Release(void);rn;rnrnrn//类实现rn#include "Sql.h"rnCSql::CSql(const char * pUser,const char * pPwd,const char * pHost)rnrn m_strHostname = _bstr_t(pHost);rn m_strUsername = _bstr_t(pUser);rn m_strPassword = _bstr_t(pPwd);rn m_strDataBase = _bstr_t("");rn m_strQuery = _bstr_t("");rn m_con.CreateInstance(__uuidof(Connection));rn m_rst.CreateInstance(__uuidof(Recordset));rn m_cmd.CreateInstance(__uuidof(Command));rnrnrnvoid CSql::Sql_SelectDB(const char *pDataBase)rnrn m_strDataBase = _bstr_t(pDataBase);rn m_strConnect = "Provider=SQLOLEDB; Server=(" + m_strHostnamern + "); Database=" + m_strDataBase rn + "; uid=" + m_strUsername + rn + "; pwd=" + m_strPassword +";";rn m_con->Open(m_strConnect,_bstr_t(""),_bstr_t(""),NULL);rnrnrnvoid CSql::Sql_Query(const char *pQuery)rnrn m_strQuery = pQuery;rn m_rst = m_con->Execute(m_strQuery,NULL,adCmdText);rnrnrnCSql::~CSql(void)rnrn rnrnrnvoid CSql::Release(void)rnrn m_rst->Close();rn m_rst = NULL;rn if(m_con->State)rn rn m_con->Close();rn m_con = NULL;rn rnrnrn主程序中实例化了三个CSQL对象,三个对象在不同的作用域里。rn第一个对象可以正常使用。rn后面两个对象调用Release的时候发生错误“对象关闭时,不允许操作!”,原先release里的代码我是写在析构里的,也报同样的错误后来我才单独写一个函数显示释放记录集和连接但仍然有错。rnrn调试显示,后面的对象无法正确执行 m_rst->Close();rnrn跪求解决办法!
“对象关闭时,不允许操作”???
Do Whilern.......rn........rn.........rnLooprnConn.Execute (delSQL)rnConn.Closernrs.Close <<<<==================rnSet Conn = NothingrnSet rs = NothingrnEnd Subrnrn请看我用箭头指出的这行,系统提示“对象关闭时,不允许操作"rn这是怎么回事? 我只是把他关了,而且关了后又不对他操作了。再说Conn对象怎么没事???
对象关闭时,不允许操作....
我用adodc1.recordsource="........"rn adodc1.refresh '进行重新读取rn 在adodc1.refresh处弹出"对象关闭时,不允许操作",错误号是"3704",本机又没安装msdn, 请各位帮帮忙. 谢谢.rn还有一个问题,我想把adodc1.datasource的数据源设给datareport,但rnset datareport1.datasource=adodc1也不行,rndatareport中的字段值的datasource又怎么设置.. 谢谢rn
对象关闭时,不允许操作
<%rnrnset rst=server.CreateObject("adodb.recordset")rnon error resume nextrnid=request.QueryString("id")rnif request.QueryString("act")="modify" thenrn '如果是修改记录rn conn.begintransrn rst.open "select * from user where u_id=" & id,conn,1,3rn rst("u_user")=request.Form("f_user")rn rst("u_code")=request.Form("f_code")rn rst.updatern rst.closern rn rst.open "select * from info where i_uid=" & id,conn,1,3rn rst("i_name")=request.Form("f_name")rn rst("i_sex")=request.Form("f_sex")rn rst("i_age")=request.Form("f_age")rn if request.Form("i_vip")=1 thenrn rst("i_vip")=truern elsern rst("i_vip")=falsern end ifrn rst.updatern rst.closern if err.number<>0 thenrn conn.rollbacktransrn response.Write("修改失败")rn elsern conn.committransrn response.Write("修改成功")rn end ifrnend ifrnrn rn%>rnrn总是提示对象关闭时,不允许操作,头都搞大了,照说逻辑很清楚,不知道哪出错,还望各位指点一二,不甚感激!
对象关闭时不允许操作!
这是一个修改函数,修改数据并显示在列表框里,代码如下:rnvoid CEmpUpdateDlg::OnUpdate() rnrnUpdateData(); //更新数据rnif(m_strName == "") //条件判断rnrnMessageBox("姓名不能为空!");rnreturn ;rnrnif(m_nAge == 0)rnrnMessageBox("请设置年龄!");rnreturn ;rnrnCString strSex, strDepart, strBirth, strAge; //定义字符串变量rnrnSYSTEMTIME time; rnCDateTimeCtrl*m_TimeCtrl=(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1); rnDateTime_GetSystemtime(m_TimeCtrl->m_hWnd,&time); rnstrBirth.Format("%d-%d-%d",time.wYear,time.wMonth,time.wDay);rnGetDlgItem(IDC_COMBO1)->GetWindowText(strSex);//设置控件的文本rnGetDlgItem(IDC_COMBO2)->GetWindowText(strDepart);rnstrAge.Format("%d", m_nAge);rntryrnrnm_pRecordset->PutCollect("name",_variant_t(m_strName));rnm_pRecordset->PutCollect("age",_variant_t((long)m_nAge));rnm_pRecordset->PutCollect("sex",_variant_t(strSex));rnm_pRecordset->PutCollect("addr",_variant_t(m_strAddr));rnm_pRecordset->PutCollect("depart",_variant_t(strDepart));rnm_pRecordset->PutCollect("birth",_variant_t(strBirth));rnm_pRecordset->PutCollect("phone",_variant_t(m_strPhone));rnm_pRecordset->PutCollect("more",_variant_t(m_strMore));rnm_pRecordset->Update();rnrnCATCH_ERROR; //运行到这一步就会报错rnMessageBox("修改成功!");rnrnrnrn[img=https://img-bbs.csdn.net/upload/201307/17/1374041312_739344.jpg][/img]rnrnrnrnrnrn应该怎样改啊?求大神指点!rn
调用RecordSet对象的Update方法时提示对象关闭错误
[img=https://img-bbs.csdn.net/upload/201605/17/1463448857_37689.png][/img][img=https://img-bbs.csdn.net/upload/201605/17/1463448863_314224.png][/img]
数据库关闭时错误,对象关闭时,不允许操作!
[code=VBScript]'从数据库到处数据到 excelrnDim FileName rnDim irni = 0rnFileName = "c:\test.xlsx"rnSet fso = CreateObject("Scripting.FileSystemObject")rnrnREM 判断文件是否存在rnIf fso.FileExists(FileName) Then rn Set objExcel = CreateObject("Excel.Application")rn Set objBook = objExcel.Workbooks.Open(FileName)rn Set objSheet = objBook.Sheets(1)rn objSheet.Name = "testing"rn objSheet.ActivaternElsern Set objExcel = CreateObject("Excel.Application") '创建 excel 对象rn Set objBook = objExcel.Workbooks.Add() '创建 excel 工作簿 rn Set objSheet = objBook.Sheets("Sheet1") '获得 Sheet1 表rn objSheet.Name = "testing" '设置表明rn objBook.Worksheets("Sheet2").Delete '删除 Sheet2 表rn objBook.Worksheets("Sheet3").Delete '删除 Sheet3 表rn objSheet.Activate '激活当前工作表rn objBook.SaveAs(FileName) '文件另存为rnEnd IfrnrnobjSheet.cells(1,1).value = "Order_Number" '设置列标题rnobjSheet.cells(1,2).value = "Customer_Name"rnobjSheet.cells(1,3).value = "Departure_Date"rnobjSheet.cells(1,4).value = "Flight_Number"rnobjSheet.cells(1,5).value = "Tickets_Ordered"rnobjSheet.cells(1,6).value = "Class"rnobjSheet.cells(1,7).value = "Agents_Name"rnobjSheet.cells(1,8).value = "Send_Signature_With_Order"rnrnSet conn = CreateObject("ADODB.Connection")rnSet rs = CreateObject("ADODB.RecordSet") rnREM 无需设置数据源连接方式rnConst strConn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=C:\flight32.mdb"rnrnsql = "select * from Orders" '查询语句rnrs.Open sql , strConn ,1,1 rnrnIf rs.EOF and rs.BOF Thenrn MsgBox "数据库中无数据"rnElsern Do until rs.EOFrn Order_Number = rs("Order_Number").valuern Customer_Name = rs("Customer_Name").valuern Departure_Date = rs("Departure_Date").valuern Flight_Number = rs("Flight_Number").valuern Tickets_Ordered = rs("Tickets_Ordered").valuern ClassType = rs("Class").valuern Agents_Name = rs("Agents_Name").valuern Send_Signature_With_Order = rs("Send_Signature_With_Order").valuernrn objSheet.cells(i+2,1).value = Order_Numberrn objSheet.cells(i+2,2).value = Customer_Namern objSheet.cells(i+2,3).value = Departure_Datern objSheet.cells(i+2,4).value = Flight_Numberrn objSheet.cells(i+2,5).value = Tickets_Orderedrn objSheet.cells(i+2,6).value = ClassTypern objSheet.cells(i+2,7).value = Agents_Namern objSheet.cells(i+2,8).value = Send_Signature_With_Orderrnrn i = i + 1rn rs.MoveNextrn LooprnEnd Ifrnrnrnrs.ClosernSet rs = Nothingrn'ON ERROR RESUME NEXTrn'conn.Close '关闭时报错误?对象关闭时,不允许操作rnSet conn = NothingrnSet fos = NothingrnobjBook.SavernobjExcel.Visible = TruernSet objBook = NothingrnobjExcel.QuitrnSet objExcel = Nothingrnrn[/code]rnrn各位高手帮忙看看 conn.close 对象关闭时,不允许操作。
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法