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技术大版内专家分月排行榜第三
C# winCE 多线程 winform 异步 委托
通过等待<em>异步</em>,我们就不会总是持有主线程的控制,这样就可以在不发生跨线程调用异常的情况下完成多线程对<em>winform</em>多线程控件的控制了。public partial class Form1 : Form { private delegate void FlushClient();//代理 public Form1() {
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#委托事件异步例子
c#<em>委托</em>事件<em>异步</em>例子,<em>委托</em>,<em>异步</em><em>委托</em>,事件
C#委托(delegate)简单示例:在两个form之间传递数据
关于Delegate【代理、<em>委托</em>】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。         现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。         现在有两个窗体Form1和Form2。         两个按钮Button1(Form)和Button2(Form2)。 Form
C#跨窗体(Winform)调用控件(委托回调)
<em>委托</em>回调
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
C#中定时器的是使用及异步委托
简单定时器使用及delegate的begininvoke,测试其<em>异步</em>调用是否真的开辟了线程,同时提供<em>异步</em><em>委托</em>执行完成后的函数处理
C# WINFORM 异步 弹出请稍等提示
在加载数据时,如果数据过多,可以弹出一个请稍等的窗体,当数据加载完毕后把这个窗体给关掉,主要采用BackgroundWorker这个类进行操作
如何判断一个form是否被关闭
如果在<em>form1</em>中有一个变量f2,该变量指向一个form2的实例。当在<em>form1</em>中使用f2.show()方法时,显示form2的窗口。但是当form2窗口被用户关闭时,在<em>form1</em>中仍然存在f2指向一个form2的那个实例,即f2不会变为指向null,即使form2已经被关闭。那么这个时候该如何判断f2变量指向的form2已经关闭了呢? 当一个窗口关闭时,它会调用自身的dispose方法,以<em>释放</em>本窗口占用的资源,因此,可以在<em>form1</em>的代码中,判断f2.isDisposed的值,如果为True说
C# 委托异步回调 基本使用方法
首先,先理清出一个概念: delegate 与Delegate有什么区别? Delegate:是一个抽象基类,它引用静态方法或引用类实例及该类的实例方法。然而,只有系统和编译器可以显式地从 Delegate 类派生出<em>委托</em>类型。 MulticastDelegate:是一个继承于Delegate的类,其拥有一个带有链表格式的<em>委托</em>列表,该列表称为调用列表,在调用多路广播<em>委托</em>时,将按照调用列表中的委
winfrom 多线程+委托更新ui(进度读条为例)
//定义一个<em>委托</em> private delegate void DelegateFunction(int ipos); private Thread multi = null; private void button1_Click(object sender, EventArgs e) { pro...
无法将类型为“Finisar.SQLite.SQLiteConnection”的对象强制转换为类型“System.Data.Common.DbConnection”。
将 NHibernate.Driver.SQLiteDriver 改为 NHibernate.Driver.SQLite20Driver
C#中关闭子窗口而不释放子窗口对象的方法
在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置。调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载。另一种简单方式是直接使用该参数运行程序。因此,在后一种情况下,需要实现的功能是:即使关闭调试窗口,其窗口<em>对象</em>也不<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
C#利用异步委托完成文件下载并返回
利用<em>异步</em><em>委托</em>完成下载并返回的操作,真正下载完成后并不在UI线程需要处理到UI线程。以下是一个完整类. /// 文件下载<em>委托</em> public delegate void HttpDownloadFileDel(string url, string path); /// 返回文件路径<em>委托</em> public delegate void FilePathDel(strin
C#一个窗体Form2获得另一个窗体Form1的方法
方法一://FORM1中的代码public partial class Frm1 : Form    {        public Frm1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {  
简单C#winform多线程委托调用进度条!
简单<em>winform</em>多线程调用进度条的例子 BeginInvoke
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
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
关于 无法访问释放对象
一个FORM,FORM中一个按钮,一个TEXTBOX:rnbutton 事件rnrn Private Sub btnOutput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rnrnbtnLogin.Clickrn Dim myThreadStart As Threading.ThreadStart = New Threading.ThreadStart(AddressOf _OutPutMessage)rn Dim myThread As Threading.Thread = New Threading.Thread(myThreadStart)rn myThread.Start()rnrn End Subrnrn执行后:rnrn不断向Textbox输出信息。rnrn执行过程中,强行关闭form,会出现以上的错误,有什么办法能避免吗?rnrn目前我只能用Try 。。 Catch 。。end try 时间来处理rnrn[code=C#]rnSystem.ObjectDisposedException: <em>无法访问</em>已<em>释放</em>的<em>对象</em>。rn<em>对象</em>名:“TextBox”。rn 在 System.Windows.Forms.Control.CreateHandle()rn 在 System.Windows.Forms.TextBoxBase.CreateHandle()rn 在 System.Windows.Forms.TextBoxBase.SetSelectedTextInternal(String text, Boolean clearUndo)rn 在 System.Windows.Forms.TextBoxBase.set_SelectedText(String value)rn 在 System.Windows.Forms.TextBoxBase.AppendText(String text)rn 在 HtmlAnalysis.MainForm.OutPutMessage(String _x, String _y, String _qty, String _soldier) 位置 D:\程rnrn序代码\HtmlAnalysis\HtmlAnalysis\MainForm.vb:行号 115rn 在 HtmlAnalysis.MainForm.OutPutMessage() 位置 D:\程序代码\HtmlAnalysis\HtmlAnalysis\MainForm.vb:行号 rnrn149rn[/code]rnrnrn
C# 多线程传参和返回值委托异步回调实例
delegate bool MyDelete(TreeNodeCollection node); bool prrelust = false; bool xzjh = false;      bool prrelust = false;         bool xzjh = false;         public bool PrintTreeViewNode(Tr
用了invoke还是出错的解决方法.wpf 调用线程无法访问对象,因为另一个线程拥有该对象
调用线程<em>无法访问</em>此<em>对象</em>,因为另一个线程拥有该<em>对象</em>。一般来说可以这么做 在C#2005后不再支持多线程直接访问界面的控件(界面创建线程与访问线程不是同一个线程),但是可以可以使用delegate来解决。 次线程不能直接修改主线程UI的界面,需要使用以下方法 方法1: [c-sharp] view plaincopy this.Dispatch
c# 委托实现多线程的实例
前面学习了<em>委托</em>,事件和多线程相关的知识。今天我们就通过在项目中常见的实例来加深对多线程的应用。 一、使用线程在窗体中显示进度条 在Winform应用程序中,经常用进度条显示进度信息。这时候就可能用到多线程。如果不采用多线程控制进度条的话,窗口界面很容易假死(无法看到进度信息,看起来像界面卡住了)。 在这个实例中,我们建立一个窗体,窗体中包括一个后台组件,一个进度条控件。当在主窗体中按“开始”...
Winform 中有关Form1、Form2两个窗体简单变量的使用
一、Winform中有两个窗口Form1、Form2,运行过程中Form1操作完就关闭,只显示form2主窗口,以及Form2中使用Form1中变量的问题:   1.首先在Form1中,从工具箱中拖两个“label控件”,命名为:txtuser(用户名)和txtpwd(密码),两个TextBox、命名为:txtUser.Text、txtPwd.Text,两个Button,命名为btnLog、bt
TransactionScope 的错误解决方法
 TransactionScope  是.net 提供的可提升事务环境,开发软件的时候非常方便,但是在大数据量处理的时候,会莫名我出错,检查代码没有任何的错误解决这个错误的方法:不用TransactionScope  ,自己写一个用MSDTC的事务就可以了。我的项目里面用的就是这TransactionScope  ,但是在导入数据的时候,超过1万条记录(3张表)的时候,系统就报错了。数据在
WPF 委托刷新UI线程(System.InvalidOperationException: '调用线程无法访问对象,因为另一个线程拥有该对象。')
跨线程调用UI控件时会出现<em>无法访问</em><em>对象</em>的错误 用<em>委托</em>实现跨线程调用 调试结果: Solution Explore: MainWindow.xaml http://schemas.microsoft.com/winfx/2
关于C#连接SQL2012查询表出现“对象名”XXX“无效”的解决办法
刚开始连接数据库查询信息时会出现这样的情况:代码无误,数据库中也能查询:试了很多方法无果,最后才发现一个很简单的步骤就能解决:1.点击所使用的账户右击并 打开 “属性”:2.在 “常规”里面将自己所需要的数据库设置为默认数据库:3.再次查询,显示正常:这个方法很简单,不知道大家有没有更好的方法,这里献丑权当抛砖引玉了。...
C# winform在线程中给控件赋值
C# <em>winform</em>在线程中给控件赋值确定要报错,这要是打印日志什么的就很烦,好在用代理就可以解决这个问题 public delegate void AppendStringCallback(string text); public static event AppendStringCallback appendStringCtrl; public delegat
c# 如何实现子窗口关闭父窗口也关闭
其实是窗口间通讯的问题,在<em>form1</em>上打开form2 ,form2 关闭时关闭<em>form1</em>实现方法:在子窗口form2中声明事件:    public delegate void childclose();    public event childclose closefather;    然后在它的关闭事件中触发本事件:     private void Form2_Closed(obj
C# 异步控制进度条
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Thr
事件与委托,异步的用法
在<em>winform</em>模式窗口事件与<em>委托</em>,<em>异步</em>的简单用法用法,
关于winform ListBox的跨线程用法,利用委托解决控件运行一段时间clear报null的问题
工作中写工具的时候输出执行信息采用了ListBox控件来呈现,这里用的是VS2010,做了超出200行自动清除的方法,多线程跑的时候有时候会遇到ListBox clear报NULL的情况, 调试发现好像还是控件跨线程使用的一些异常。于是百度找到了<em>委托</em>的方法,原理就是因为控件是由窗体主线程创建的,所以对于控件的操作还是由主线程来完成,这个时候<em>委托</em>就出现了,废话不多说上代码。 public par
C#多线程的异步委托/调用
C#<em>异步</em>调用(Asynchronou Delegate) C#<em>异步</em>调用获取结果方法:主要有三种,也可以说是四种(官方说四种,电子书说三种),官方在MSDN上已经有详细的说明: 链接 需要了解到获取<em>异步</em>执行的返回值,意味着你需要调用Delegate的BeginInvoke方法,而不是Invoke方法。 第一种就是书上没有说的,但是官方还是给出来的,就是通过调用EndInvoke
C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结
C#线程中安全访问控件(重用<em>委托</em>,避免繁复的delegate,Invoke)总结 1.第一种,不安全,当线程过多后,timer控件和线程中同时访问窗体控件时,有时会出现界面重绘出错。 public frmMain() { InitializeComponent(); System.Windows.Forms.Control.CheckForIllegal
C# winform form之间传值(本人亲测)(2)
一、父窗体向子窗体传值 父窗体中代码: private void btn_father_Click(object sender, EventArgs e) { Child child = new Child(); child.child_text = tb_father.Text; child.Sh
c# event Action 判断事件列表中是否存在这个委托
using UnityEngine; using System.Collections; using System; public class eventTest : MonoBehaviour { private event Action&amp;lt;uint&amp;gt; onClick; private uint i = 0; // Use this ...
【VB.NET】多线程加异步委托实现背景透明的等待窗体(loading界面),超时可以取消操作
为了给用户提供更好的体验,读取数据库等程序需要长时间来执行的操作,需要弹出一个等待界面。可以一边执行需要等待的操作,一边显示一个等待界面。当执行完毕时等待界面消失。用户可以提前取消操作,还可以设置操作的最大等待时间,若超过指定时间仍没完成操作可结束当前操作,可以自定义提示文本。本资源使用VS2017软件,VB.NET编程,<em>异步</em><em>委托</em>和多线程编程实现背景透明的等待窗体。
Winform窗体传值的几种方式(属性赋值,委托,事件)
百度云盘代码下载:http://pan.baidu.com/share/link?shareid=388120&uk=3627406265 窗体设计: 父窗体: 子窗体: 方法一: 1、子窗体设置一个父窗体MainFrm属性: public MainFrm MainFrm { get; set; } 2、在父窗体启动子窗体的时候: ChildFrm frm =new Chil
WebClient异步下载文件
private WebClient MyWebClient = new WebClient(); private void MyWebClient_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { if (e.E
EPSON打印机清零工具(程序)Stylus4xProgram_Ver32下载
EPSON打印机清零工具(程序)Stylus4xProgram_Ver32 相关下载链接:[url=//download.csdn.net/download/morre/394416?utm_source=bbsseo]//download.csdn.net/download/morre/394416?utm_source=bbsseo[/url]
安腾客户端3.6.9多网卡破解下载
校园网目前用的是安腾公司的拨号软件,版本3.6.9。去除了拨号软件对多网卡的限制,无论机器安装几个网卡都可以自由的上网。 若要用无线共享上网,先进行认证再连接无线便可以共享上网了 相关下载链接:[url=//download.csdn.net/download/n515144112/2732712?utm_source=bbsseo]//download.csdn.net/download/n515144112/2732712?utm_source=bbsseo[/url]
从输入的一批正整数中求出最大值、最小值和平均值,输入0结束数据的输入下载
从输入的一批正整数中求出最大值、最小值和平均值,输入0结束数据的输入。C语言程序 相关下载链接:[url=//download.csdn.net/download/shazhangdan/2457863?utm_source=bbsseo]//download.csdn.net/download/shazhangdan/2457863?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库已选课程查询 数据库已选课程查询
我们是很有底线的