无法访问已释放的对象
① 填写税收分类时出现无法访问以释放的对象是什么情况
程序没有错误但是在运行结束是会提示无法访问以释放的对象这个问题与C#的垃圾回收有关。垃圾回收器管理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的垃圾回收器的制约。垃圾回收器可以确定运行垃圾回收的最佳时间,自动进行垃圾回收。然而垃圾回收的一个产物是:C#对象没有确定性毁坏。所以会出现子窗口对象已被销毁,但又不为null,故出现访问时产生“未处理 ObjectDisposedException”异常
② C# 无法访问已释放的对象
不要对同一个流get两次。。
如果需要读取两次的话 先读取到memoryStream中再做第二次处理。。
③ Telnet 远程登录 提示无法访问已释放的对象 对象名:System.Net.Sockets.Socket 怎么解决啊
this.curSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPointlEp=newIPEndPoint(IPAddress.Parse(srcIp),23);
if(false==this.curSocket.IsBound)
{
this.curSocket.Bind(lEp);
}
IPEndPointrEp=newIPEndPoint(IPAddress.Parse(dstIp),int.Parse(dstPort));
this.curSocket.Blocking=false;
IAsyncResultiAsyncRet=this.curSocket.BeginConnect(
rEp,
newAsyncCallback(ConnectCallback),
curSocket);
//这里修改如下:
//longstopTm=DateTime.Now.AddSeconds(tm).Ticks;
while(iAsyncRet.IsCompleted==false);
IAsyncResultar=this.curSocket.BeginSend(smk,0,smk.Length,
SocketFlags.None,
callbackEndDispatch,
this.curSocket);
④ C#无法访问已释放的对象
这个说明窗口资源已经释放了
重新打开窗口,可以重新new一个新的,打开窗口
如果要保留这个窗口,可以不用关闭,关闭操作变成隐藏,在打开时再show
异常信息可以定位到具体哪一行代码出现问题了,点击异常详细信息,有异常堆栈
⑤ C#Winform打印预览无法访问已释放的对象。
这个东西要打开之前new个新的,不要用工具箱里面直接拖进去的
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
⑥ winform 无法访问已释放的对象!
你好,
其实很简单,
首先在这里:
From2 fa;
public MainForm()
{
InitializeComponent();
fa = new From2();
fa.MdiParent = this;
fa.WindowState = FormWindowState.Maximized;
fa.button1.Click += new EventHandler(button1_Click);
你在MainForm构造函数里调用了fa的初始化代码fa = new From2();
然后,
“输入完后 点FORM2的Button1关闭 ”
到这里,Form2被关闭,也就是fa所指向的窗体被关闭了
fa被释放掉了……
所以你第二次点“增加题目”的时候,fa只是一个空引用了……
试试这样写:
把MainForm构造函数里的
fa = new From2();
fa.MdiParent = this;
fa.WindowState = FormWindowState.Maximized;
fa.button1.Click += new EventHandler(button1_Click);
写到增加题目里,也就是:
private void 增加题目ToolStripMenuItem_Click(object sender, EventArgs e)
{
fa = new From2();
fa.MdiParent = this;
fa.WindowState = FormWindowState.Maximized;
fa.button1.Click += new EventHandler(button1_Click);
fa.Show();
}
Button1里增加判断:
void button1_Click(object sender, EventArgs e)
{
if(fa!=null)
{
MessageBox.Show(fa.Timu);
fa.Close();
}
}
⑦ 读取ftp文件最后一行以后报错,无法访问已释放的对象。 对象名:System.Net.Sockets.NetworkStream
while ((strLine = reader.ReadLine()) != null) //这里报错 读取到最后一的时候
会这样是因为当读取流读取到最后一行内容后就关闭了文件了
虽然在正常的读取流中会在读取完内容后返回null
但再ftp文件的读取中,读取完最后一行后再读取就会抛出这个异常
其实用您代码注释的这句//string strfs = reader.ReadToEnd();来读取就可以了
如果要分行处理直接用分行符分割一下就可以了