C# 多线程Invoke的问题
刚学C#...想想试试多线程,结果就蛋疼了..--------------------usingSystem;usingSystem.Collections.Generi...
刚学C#...想想试试多线程,结果就蛋疼了..
--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading; //多线程
namespace 我的工具箱
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Thread thread1; //新建thread1线程
public delegate void wt(string Str1); //声明委托
public Window1()
{
InitializeComponent();
thread1 = new Thread(new ThreadStart(run));
thread1.Start();
wt tWT = new wt(twRun);
}
public void run()
{
start:
if (network.connect.PingResult("www.baidu.com"))
{
labNetStat.Invoke(tWT, new Object[] { "已连接到网络" });
}
else
{
labNetStat.Invoke(tWT, new Object[] { "未连接到网络" });
}
Thread.Sleep(1000);
goto start;
}
private void twRun(string Str1)
{
labNetStat.Content = Str1;
}
}
}
------------------
“System.Windows.Controls.Label”不包含“Invoke”的定义,并且找不到可接受类型为“System.Windows.Controls.Label”的第一个参数的扩展方法“Invoke”(是否缺少 using 指令或程序集引用?)
当前上下文中不存在名称“tWT” 展开
--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading; //多线程
namespace 我的工具箱
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Thread thread1; //新建thread1线程
public delegate void wt(string Str1); //声明委托
public Window1()
{
InitializeComponent();
thread1 = new Thread(new ThreadStart(run));
thread1.Start();
wt tWT = new wt(twRun);
}
public void run()
{
start:
if (network.connect.PingResult("www.baidu.com"))
{
labNetStat.Invoke(tWT, new Object[] { "已连接到网络" });
}
else
{
labNetStat.Invoke(tWT, new Object[] { "未连接到网络" });
}
Thread.Sleep(1000);
goto start;
}
private void twRun(string Str1)
{
labNetStat.Content = Str1;
}
}
}
------------------
“System.Windows.Controls.Label”不包含“Invoke”的定义,并且找不到可接受类型为“System.Windows.Controls.Label”的第一个参数的扩展方法“Invoke”(是否缺少 using 指令或程序集引用?)
当前上下文中不存在名称“tWT” 展开
2个回答
展开全部
注意 ,只有System.Windows.Forms.Label控件才有 BeginInvoke 和 inInvoke的调用
在开头应引用
using System.Windows.Forms;
这句 public partial class Window1 : Window
改成 public partial class Window1 : Form
在run函数中
labNetStat.Invoke(tWT, new Object[] { "已连接到网络" });
改成 //异步调用//不在同一线程,应该一步调用
labNetStat.BeginInvoke(tWT, new Object[] { "已连接到网络" });
//this.lblDefault.BeginInvoke(oneDelegate)
在开头应引用
using System.Windows.Forms;
这句 public partial class Window1 : Window
改成 public partial class Window1 : Form
在run函数中
labNetStat.Invoke(tWT, new Object[] { "已连接到网络" });
改成 //异步调用//不在同一线程,应该一步调用
labNetStat.BeginInvoke(tWT, new Object[] { "已连接到网络" });
//this.lblDefault.BeginInvoke(oneDelegate)
更多追问追答
追问
谢谢叻
不过现在出现另一个错误叻
public partial class Window1 : Form
这里出错叻
“我的工具箱.Window1”的分部声明一定不能指定不同的基类
------
我是用WPF做的,不知道和这个有没关系...
追答
一般c#软件开发 或者 asp.net的web开发等 都用 Microsoft Visual Studio ,Microsoft Visual Studio 2005 ,Microsoft Visual Studio 2008,Microsoft Visual Studio 2010,这是微软专门为推行c#开发的一种可视化编程调试工具。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询