winform异步委托:无法访问已释放的对象。对象名:“Form1”。 [问题点数:25分,结帖人qq137337016]

Bbs1
本版专家分:0
结帖率 96.43%
Bbs1
本版专家分:0
Bbs5
本版专家分:2132
Bbs1
本版专家分:0
Bbs6
本版专家分:5568
Bbs6
本版专家分:5568
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:5568
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs6
本版专家分:5568
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:5568
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:5568
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs6
本版专家分:5568
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs10
本版专家分:157147
Blank
金牌 2011年12月 总版技术专家分月排行榜第一
2011年11月 总版技术专家分月排行榜第一
Blank
红花 2012年1月 .NET技术大版内专家分月排行榜第一
2011年12月 .NET技术大版内专家分月排行榜第一
2011年11月 .NET技术大版内专家分月排行榜第一
2008年3月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2010年4月 .NET技术大版内专家分月排行榜第二
2008年2月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年3月 .NET技术大版内专家分月排行榜第三
2009年12月 .NET技术大版内专家分月排行榜第三
2009年4月 .NET技术大版内专家分月排行榜第三
另人崩溃的WCF,无法访问释放对象
问题: public object ReceiveMessage(Guid userid) { if (OC.State == System.ServiceModel.CommunicationSta
无法访问释放对象
我在一个子窗口<em>form1</em>_load里面加入下面代码rn Dim aaa As New System.Windows.Forms.MenuStriprn aaa = fMain.MenuStrip1rn Me.Controls.Add(aaa)rnrn第一次打开没有错误,但是当我关闭<em>form1</em>后,再打开时候提示 错误: <em>无法访问</em>已<em>释放</em>的<em>对象</em>。<em>对象</em>名“MenuStrip”rn这是怎么回事呢rnrn
无法访问释放对象!!!!!
以下是<em>form1</em>的代码:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnrnnamespace _20080517S2rnrn public partial class MainForm : Formrn rn From2 fa;rn public MainForm()rn rn InitializeComponent();rn fa = new From2();rn fa.MdiParent = this;rn fa.WindowState = FormWindowState.Maximized;rn fa.button1.Click += new EventHandler(button1_Click);rn rn rn rn void button1_Click(object sender, EventArgs e)rn rn MessageBox.Show(fa.Timu);rn fa.Close();rn rn rn rn rn private void 增加题目ToolStripMenuItem_Click(object sender, EventArgs e)rn rn fa.Show();rn rn rnrnrnrn下面是form2的代码:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnrnnamespace _20080517S2rnrn public partial class From2: Formrn rn public From2()rn rn InitializeComponent();rn rn public string Timurn rn get return this.textBox1.Text; rn rn public string XX1rn rn get return this.textBox2.Text; rn rn public string XX2 rn get return this.textBox3.Text; rn rn public string XX3 rn get return this.textBox4.Text; rn rn public string XX4 rn get return this.textBox5.Text; rn rnrn private void button1_Click(object sender, EventArgs e)rn rn MessageBox.Show(this.Timu);rn rn rn rnrnrnrn第一次点击”增加题目“时 form2 正常SHOW出来!rnrn输入完后 点FORM2的Button1关闭rnrn然后第二次点击“增加题目”的时候就会出现 “<em>无法访问</em>已<em>释放</em>的<em>对象</em>” 的错误rnrn为什么会这样 rnrn环境:VS2008
无法访问释放对象
[code=vb]Imports System.Windows.FormsrnPublic Class Form1rn Dim sform As New Form2rn Dim ssform As New Form3rnrn Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelectrn If TreeView1.SelectedNode.Text = "1" Thenrn sform.MdiParent = Mern sform.LayoutMdi(MdiLayout.Cascade)rn sform.Show()rn ElseIf TreeView1.SelectedNode.Text = "2" Thenrn ssform.MdiParent = Mern ssform.LayoutMdi(MdiLayout.Cascade)rn ssform.Show()rnrn Else : MsgBox("as")rnrn End Ifrn End Sub[/code]rn点击子窗体的关闭窗口键后再次点击节点 提示错误:<em>无法访问</em><em>释放</em>的<em>对象</em>! 求解啊
C#委托(delegate)简单示例:在两个form之间传递数据
关于Delegate【代理、<em>委托</em>】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。         现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。         现在有两个窗体Form1和Form2。         两个按钮Button1(Form)和Button2(Form2)。 Form
在一个窗体中委托更新另一窗体中的文本框值
有两个<em>winform</em>窗体Form1和Form2,在Form2中点击按钮<em>委托</em>更新Form1中文本框的值
C# winCE 多线程 winform 异步 委托
通过等待<em>异步</em>,我们就不会总是持有主线程的控制,这样就可以在不发生跨线程调用异常的情况下完成多线程对<em>winform</em>多线程控件的控制了。public partial class Form1 : Form { private delegate void FlushClient();//代理 public Form1() {
C# 多线程 用委托实现异步_调用委托的BeginInvoke和EndInvoke方法
1.C#中的每一个<em>委托</em>都内置了BeginInvoke和EndInvoke方法,如果<em>委托</em>的方法列表里只有一个方法,那么这个方法就可以<em>异步</em>执行(不在当前线程里执行,另开辟一个线程执行)。<em>委托</em>的BeginInvoke和EndInvoke方法就是为了上述目的而生的。 2.原始线程发起了一个<em>异步</em>线程,有如下三种执行方式: 方式一:等待一直到完成,即原始线程在发起了<em>异步</em>线程以及做了一些必要处理之后,原始线
C# 如何通过委托进行窗体1到窗体2的传值
举个简单的例子吧:假如你要把Form1里的textBox1框的值赋给Form2中的textBox1框。用<em>委托</em>么可以这么写: Form1中 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;
C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结
C#线程中安全访问控件(重用<em>委托</em>,避免繁复的delegate,Invoke)总结 1.第一种,不安全,当线程过多后,timer控件和线程中同时访问窗体控件时,有时会出现界面重绘出错。 public frmMain() { InitializeComponent(); System.Windows.Forms.Control.CheckForIllegal
转:C# 通过委托更新UI(异步加载)
来自:http://blog.csdn.net/gongzhe2011/article/details/27351853using System.Windows.Forms; using System.Threading; using System; namespace Threaddemo1 { public partial class Form1 : Form ...
StreamWriter无法访问已经关闭的文件
文件读写和流 一 流的概念 在.NET中Stream 是所有流的抽象基类。流是字节序列的抽象概念,或者说是计算机在处理文件或数据时产生的二进制序列。例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。简单的说流提供了不同介质之间的数据交互功能。 在.NET中常用的
C# 异步委托回调函数使用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace AsyncDelegateExam{    delegate int TakeAWhileDelegate(in...
C# winform中使用IAsyncResult实现异步编程
c#,<em>异步</em>编程,IAsyncResult
C#中定时器的是使用及异步委托
简单定时器使用及delegate的begininvoke,测试其<em>异步</em>调用是否真的开辟了线程,同时提供<em>异步</em><em>委托</em>执行完成后的函数处理
C#中委托异步调用输出日志
很简单的一个输出日志信息的操作,每次只需要new 一个<em>委托</em>,然后使用BeginInvoke<em>异步</em>调用<em>委托</em>函数即可,不会阻塞主进程。这里只是简单的写了,并没有对日志的大小做限制,理论上只要磁盘空间足够,就可以一直向日志文档中写入。
C#使用多线程并发之异步委托IAsyncResult
使用<em>委托</em>开启多线程(多线程深入)1、用<em>委托</em>(Delegate)的BeginInvoke和EndInvoke方法操作线程 BeginInvoke方法可以使用线程<em>异步</em>地执行<em>委托</em>所指向的方法。然后通过EndInvoke方法获得方法的返回值(EndInvoke方法的返回值就是被调用方法的返回值),或是确定方法已经被成功调用。 class Program { private delegate int New
简单C#winform多线程委托调用进度条!
简单<em>winform</em>多线程调用进度条的例子 BeginInvoke
Winform跨窗体操作控件(使用委托
Winform跨窗体操作控件是<em>winform</em>开发中很常见的形式,最常见且简单有效的方式便是使用<em>委托</em>的方式来进行操作,下面我将通过一个小实例来说明如何使用<em>委托</em>跨窗体实现控件操作。 实例介绍:两个窗体,Form1按钮打开Form2,然后在Form2的TextBox输入值在Form1的TextBox中显示出来。 一、项目结构 Form1窗体设计: Form2窗
C#跨窗体(Winform)调用控件(委托回调)
<em>委托</em>回调
Winform跨线程打印日志到TextBox(使用委托跨线程访问控件)
class Test { public delegate void ThreadStartDelegate(System.Windows.Forms.RichTextBox ric, string msg); public static void ShowMsg(System.Windows.Forms.RichTextBox ric, string ms
C# 委托异步回调 基本使用方法
首先,先理清出一个概念: delegate 与Delegate有什么区别? Delegate:是一个抽象基类,它引用静态方法或引用类实例及该类的实例方法。然而,只有系统和编译器可以显式地从 Delegate 类派生出<em>委托</em>类型。 MulticastDelegate:是一个继承于Delegate的类,其拥有一个带有链表格式的<em>委托</em>列表,该列表称为调用列表,在调用多路广播<em>委托</em>时,将按照调用列表中的委
通信对象System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态
services>       service name="SQS.Demo.Server.Ticket" behaviorConfiguration="TicketBehavior">         endpoint address="TicketService" binding="netTcpBinding"bindingConfiguration="TicketBindingConfi
.NET对象释放
最近在编写代码时应用到了using语句,它能够自动<em>释放</em>语句块内的资源,同样在vb.NET中还提供了多种方法<em>释放</em>资源,接下来对它们进行下总结。 .NET提供了垃圾回收器(Garbage Collector)来自行毁灭物件,它自动<em>释放</em>用来存储不在需要的<em>对象</em>的内存,但内存的<em>释放</em>具有不确定性,而且在不定的时间执行,一旦通用语言运行库(CLR)决定执行垃圾回收,就会<em>释放</em>内存。但是,通常最好尽快<em>释放</em>诸如...
无法访问释放对象。\r\n对象名:“System.Net.Sockets.Socket”。
在数据表中共有5个IP段,分别是123.164.122.1// 123.164.122.2// 123.164.122.3// 123.164.122.4// 123.164.122.5 虚幻从数据库中取出这些IP并使用socket通信连接.rnrnrn在成功连接了一个IP后,马上socket关掉,循环连接第二个,依次........rnrn明明已经成功<em>释放</em>,但是程序却提示:"<em>无法访问</em>已<em>释放</em>的<em>对象</em>。\r\n<em>对象</em>名:“System.Net.Sockets.Socket”。"rnrn该如何解决,是不是要等待时间<em>释放</em>,谢谢,在线等rnrnrn代码如下:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Text;rnusing System.Windows.Forms;rnrnusing System.Data.SqlClient;rnusing System.Configuration;rnusing System.Net;rnusing System.Net.Sockets;rnusing System.Threading;rnusing Microsoft.Win32;rnrnrnnamespace CommandSendrnrn public partial class Form1 : Formrn rn public Form1()rn rn InitializeComponent();rn rn System.Net.Sockets.Socket su = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); rn System.Net.IPAddress addr = new System.Net.IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);rn public string StrIp,StrState;rn //Thread t;rnrn #region 发送命令rn public void WaitData()rn rn tryrn rn rnrn string sql = " SELECT * FROM Ip ";rn DataTable dt = Conn.BindTable(sql);rn if (dt.Rows.Count != 0)rn rn for (int i = 0; i < dt.Rows.Count; i++)rn rn if (dt.Rows[i]["IP"].ToString().Replace("'", "''").Trim() != "")rn rn byte[] bytes = new byte[1024];rnrn System.Net.IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());rn System.Net.IPAddress[] ipAddress = ipHostInfo.AddressList;rn rn StrIp = dt.Rows[i]["IP"].ToString().Replace("'", "''").Trim();rn StrState = dt.Rows[i]["State"].ToString().Replace("'", "''").Trim();rnrn IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(StrIp), 9802);rn su.Connect(localEndPoint);rnrn su.Send(Encoding.Unicode.GetBytes(StrState.ToString().Replace("'", "''").Trim()));rnrn su.Receive(bytes);rn this.label1.Text = Encoding.Unicode.GetString(bytes).Replace("'", "''").Trim();rnrn //if (this.label1.Text == "OK")rn //rn su.Close();rn //rn rn rn rn rn rn rn catch (Exception ex)rn rn string a = ex.ToString();rn su.Close();rn rn finallyrn rn su.Close();rn rnrn rn #endregionrnrn #region 初始化rn private void Form1_Load(object sender, EventArgs e)rn rn WaitData();rn rn #endregionrn rn
关于winform ListBox的跨线程用法,利用委托解决控件运行一段时间clear报null的问题
工作中写工具的时候输出执行信息采用了ListBox控件来呈现,这里用的是VS2010,做了超出200行自动清除的方法,多线程跑的时候有时候会遇到ListBox clear报NULL的情况, 调试发现好像还是控件跨线程使用的一些异常。于是百度找到了<em>委托</em>的方法,原理就是因为控件是由窗体主线程创建的,所以对于控件的操作还是由主线程来完成,这个时候<em>委托</em>就出现了,废话不多说上代码。 public par
C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Net; using System.Net
System.ObjectDisposedException: 无法访问释放对象
我用C#仿照别人的写一个控件,其中用到了WebBrowser, 编译后放到HTML中,结果确出现以下错误rn有关调用实时(JIT)调试而不是此对话框的详细信息,rn请参见此消息的结尾。rnrn************** 异常文本 **************rnSystem.ObjectDisposedException: <em>无法访问</em>已<em>释放</em>的<em>对象</em>。rn<em>对象</em>名:“WebBrowser”。rn 在 System.Windows.Forms.WebBrowser.get_AxIWebBrowser2()rn 在 System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)rn 在 System.Windows.Forms.WebBrowser.PerformNavigateHelper(String urlString, Boolean newWindow, String targetFrameName, Byte[] postData, String headers)rn 在 System.Windows.Forms.WebBrowser.Navigate(String urlString)rn 在 CSharpActiveX.Hello.btnGo_Click(Object sender, EventArgs e) 位置 D:\VC++\CSharpActiveX\CSharpActiveX\Hello.cs:行号 110rn 在 System.Windows.Forms.Control.OnClick(EventArgs e)rn 在 System.Windows.Forms.Button.OnClick(EventArgs e)rn 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)rn 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)rn 在 System.Windows.Forms.Control.WndProc(Message& m)rn 在 System.Windows.Forms.ButtonBase.WndProc(Message& m)rn 在 System.Windows.Forms.Button.WndProc(Message& m)rn 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)rn 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)rn 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)rnrnrnrn************** JIT 调试 **************rn要启用实时(JIT)调试,rn该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置rnjitDebugging 值。rn编译应用程序时还必须启用rn调试。rnrn例如: rnrnrn rnrnrn启用 JIT 调试后,任何无法处理的异常rn都将被发送到在此计算机上注册的 JIT 调试器,rn而不是由此对话框处理。rnrnHTML文件代码是rnrnrn rn ActiveX测试rnrnrnrnrnrnrnrnC#的原代码:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Drawing;rnusing System.Data;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.Runtime.CompilerServices;rnusing System.Runtime.InteropServices;rnusing System.Security; rnrnnamespace CSharpActiveXrnrn [Guid("4A44CF4E-F859-4328-AA22-3E9D7AFFF1AB")]rn public partial class Hello : UserControl, IObjectSafetyrn rn public Hello()rn rn InitializeComponent();rn rnrn #region IObjectSafety 成员rn private const string _IID_IDispatch = "00020400-0000-0000-C000-000000000046";rn private const string _IID_IDispatchEx = "a6ef9860-c720-11d0-9337-00a0c90dcaa9";rn private const string _IID_IPersistStorage = "0000010A-0000-0000-C000-000000000046";rn private const string _IID_IPersistStream = "00000109-0000-0000-C000-000000000046";rn private const string _IID_IPersistPropertyBag = "37D84F60-42CB-11CE-8135-00AA004BB851";rn private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;rn private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;rn private const int S_OK = 0;rn private const int E_FAIL = unchecked((int)0x80004005);rn private const int E_NOINTERFACE = unchecked((int)0x80004002);rn private bool _fSafeForScripting = true;rn private bool _fSafeForInitializing = true;rn public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions)rn rn int Rslt = E_FAIL;rn string strGUID = riid.ToString("B");rn pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;rn switch (strGUID)rn rn case _IID_IDispatch:rn case _IID_IDispatchEx:rn Rslt = S_OK;rn pdwEnabledOptions = 0;rn if (_fSafeForScripting == true)rn pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;rn break;rn case _IID_IPersistStorage:rn case _IID_IPersistStream:rn case _IID_IPersistPropertyBag:rn Rslt = S_OK;rn pdwEnabledOptions = 0;rn if (_fSafeForInitializing == true)rn pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;rn break;rn default:rn Rslt = E_NOINTERFACE;rn break;rn rn return Rslt;rn rn public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)rn rn int Rslt = E_FAIL;rn string strGUID = riid.ToString("B");rn switch (strGUID)rn rn case _IID_IDispatch:rn case _IID_IDispatchEx:rn if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_CALLER) && (_fSafeForScripting == true))rn Rslt = S_OK;rn break;rn case _IID_IPersistStorage:rn case _IID_IPersistStream:rn case _IID_IPersistPropertyBag:rn if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_DATA) && (_fSafeForInitializing == true))rn Rslt = S_OK;rn break;rn default:rn Rslt = E_NOINTERFACE;rn break;rn rn return Rslt;rn rn #endregionrnrn private void button1_Click(object sender, EventArgs e)rn rn SetTime(DateTime.Now.ToLongTimeString());rn rnrn public void SetTime(string timeStr)rn rn this.label2.Text = timeStr;rn rnrn public void SayHello()rn rn SetTime("出错了");rn rnrn private void button2_Click(object sender, EventArgs e)rn rn this.label2.BackColor = Color.Red;rn rnrn private void btnGo_Click(object sender, EventArgs e)rn rn this.Browser.Navigate(txtAddr.Text);rn rnrn private void btnPreview_Click(object sender, EventArgs e)rn rn IOleCommandTarget pCmdTarg = Browser.ActiveXInstance as IOleCommandTarget;rn Guid CGID_MSHTML = GlobalConst.CGID_MSHTML;rnrn string vTemplatePath = txtTemplateAddr.Text;rn Object[] o = new object[1] vTemplatePath ;rnrn pCmdTarg.Exec(ref CGID_MSHTML,rn GlobalConst.IDM_PRINTPREVIEW,rn (uint)OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER,rn o,rn null);rn rnrn private void btnPrint_Click(object sender, EventArgs e)rn rn IOleCommandTarget pCmdTarg = Browser.ActiveXInstance as IOleCommandTarget;rn Guid CGID_MSHTML = GlobalConst.CGID_MSHTML;rnrn string vTemplatePath = txtTemplateAddr.Text;rn Object[] o = new object[1] vTemplatePath ;rnrn pCmdTarg.Exec(ref CGID_MSHTML,rn GlobalConst.IDM_PRINT,rn (uint)OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER,rn o,rn null); rn rn rnrnrn接口IObjectSafety.cs:rnusing System;rnusing System.Collections.Generic;rnusing System.Text;rnusing System.Runtime.InteropServices; rnrnnamespace CSharpActiveXrnrn [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]rn [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] rn public interface IObjectSafetyrn rn [PreserveSig]rn int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions); rn [PreserveSig()] rn int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions); rn rnrnrn接口IOleCommandTarget.cs:rnusing System;rnusing System.Collections.Generic;rnusing System.Text;rnusing System.Runtime.InteropServices;rnusing System.Runtime.InteropServices.ComTypes;rnrnnamespace CSharpActiveXrnrn [ComImport(), Guid("B722BCCB-4E68-101B-A2BC-00AA00404770"),rn InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]rnrn public interface IOleCommandTargetrn rn [PreserveSig()]rn int QueryStatus([In, MarshalAs(UnmanagedType.Struct)] ref Guidrn pguidCmdGroup, [MarshalAs(UnmanagedType.U4)] int cCmds,rn [In, Out] IntPtr prgCmds, [In, Out] IntPtr pCmdText);rn [PreserveSig()]rn int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdExecOpt,rn [In, MarshalAs(UnmanagedType.LPArray)] object[] pvaIn,rn [In, Out, MarshalAs(UnmanagedType.LPArray)] object[] pvaOut);rnrn rnrn public enum OLECMDEXECOPTrn rn OLECMDEXECOPT_DODEFAULT,rn OLECMDEXECOPT_PROMPTUSER,rn OLECMDEXECOPT_DONTPROMPTUSER,rn OLECMDEXECOPT_SHOWHELPrn rn public static class GlobalConstrn rn public const int MSOCMDEXECOPT_DONTPROMPTUSER = 2;rn public const int IDM_PRINT = 0x1b;rn public const int IDM_PRINTPREVIEW = 0x7d3;rn public static readonly Guid CGID_MSHTML = new Guid("DE4BA900-59CA-11CF-9592-444553540000");rn public static readonly Guid IID_OleCommandTarget = new Guid("B722BCCB-4E68-101B-A2BC-00AA00404770");rn rnrnrnrn生成后rn再部署安装Setup后rnrn打开HTML页,click me和button2均无问题,rn在Document address中输入:http://www.sohu.com 然后点击Go就出现上面的错误.rn也就是说程序在rn private void btnGo_Click(object sender, EventArgs e)rn rn this.Browser.Navigate(txtAddr.Text);rn rn出错,不知怎样解决.rnrn
无法将类型为“Finisar.SQLite.SQLiteConnection”的对象强制转换为类型“System.Data.Common.DbConnection”。
将 NHibernate.Driver.SQLiteDriver 改为 NHibernate.Driver.SQLite20Driver
C#中关闭子窗口而不释放子窗口对象的方法
在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置。调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载。另一种简单方式是直接使用该参数运行程序。因此,在后一种情况下,需要实现的功能是:即使关闭调试窗口,其窗口<em>对象</em>也不<em>释放</em>。除非其主窗口关闭,才销毁其调试窗口的<em>对象</em>。
对象引用设置到对象的实例。"}">C# winform界面在线程中使用委托不断刷新界面 异常 使用委托{"未将对象引用设置到对象的实例。"}
解决方法: 在线程不断刷新的控件中添加一下代码             this.SetStyle(ControlStyles.UserPaint, true);             this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);             this.SetStyle(ControlStyles.AllP
C#一个窗体Form2获得另一个窗体Form1的方法
方法一://FORM1中的代码public partial class Frm1 : Form    {        public Frm1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {  
c# 委托实现多线程的实例
前面学习了<em>委托</em>,事件和多线程相关的知识。今天我们就通过在项目中常见的实例来加深对多线程的应用。 一、使用线程在窗体中显示进度条 在Winform应用程序中,经常用进度条显示进度信息。这时候就可能用到多线程。如果不采用多线程控制进度条的话,窗口界面很容易假死(无法看到进度信息,看起来像界面卡住了)。 在这个实例中,我们建立一个窗体,窗体中包括一个后台组件,一个进度条控件。当在主窗体中按“开始”...
C#多线程的异步委托/调用
C#<em>异步</em>调用(Asynchronou Delegate) C#<em>异步</em>调用获取结果方法:主要有三种,也可以说是四种(官方说四种,电子书说三种),官方在MSDN上已经有详细的说明: 链接 需要了解到获取<em>异步</em>执行的返回值,意味着你需要调用Delegate的BeginInvoke方法,而不是Invoke方法。 第一种就是书上没有说的,但是官方还是给出来的,就是通过调用EndInvoke
Winform 中有关Form1、Form2两个窗体简单变量的使用
一、Winform中有两个窗口Form1、Form2,运行过程中Form1操作完就关闭,只显示form2主窗口,以及Form2中使用Form1中变量的问题:   1.首先在Form1中,从工具箱中拖两个“label控件”,命名为:txtuser(用户名)和txtpwd(密码),两个TextBox、命名为:txtUser.Text、txtPwd.Text,两个Button,命名为btnLog、bt
C#中的异步委托
<em>异步</em><em>委托</em>默认情况下,执行一个<em>委托</em>实例操作是同步的,但<em>委托</em>实例同样可以使用成员函数BeginInvoke()进行<em>异步</em>回调。 BeginInvoke()除了接收原有<em>委托</em>签名的参数之外,参数表尾部额外带有两个参数,分别为AsyncCallback<em>委托</em>类型和object类型。 AsyncCallback<em>委托</em>在回调<em>委托</em>运行结束之后触发,AsyncCallback<em>委托</em>接收一个IAsyncResult类型的参数。
一个通过BackgroundWorker实现WinForm异步操作的例子
一个通过BackgroundWorker实现WinForm<em>异步</em>操作的例子
暗组2010黑客工具包3.06G下载
暗组2010黑客工具包3.06G 种子文件 相关下载链接:[url=//download.csdn.net/download/dashu520/2455196?utm_source=bbsseo]//download.csdn.net/download/dashu520/2455196?utm_source=bbsseo[/url]
android4.0.3源码下载
Android4.0.3系统源码,下载后解压,放到sources文件夹下,然后指引导这个目录即可 相关下载链接:[url=//download.csdn.net/download/beyond181/6668535?utm_source=bbsseo]//download.csdn.net/download/beyond181/6668535?utm_source=bbsseo[/url]
41.[开源][安卓][自定义ListView单元格]android-swipelistview-master下载
41.[开源][安卓][自定义ListView单元格]android-swipelistview-master 相关下载链接:[url=//download.csdn.net/download/cleopard/8464227?utm_source=bbsseo]//download.csdn.net/download/cleopard/8464227?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库已选课程查询 数据库已选课程查询
我们是很有底线的