有没有什么方法在执行一个方法的同时执行另一个方法 有没有什么方法在执行一个方法的同时执行另一个方法,当然不是在第一个方法里调用第二个方法。不知道有没有办法实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义一个委托,把那两个方法定义为参数,但在CPU运行时还是有先后的,没有真真正的同时执行! 传统上的写法是使用线程来执行两段程序,同时考虑好同步(Join)机制。我在帖子《我们写的程序真正用到多核了结构的能量了吗? 》上介绍了.net framework中新的并行计算框架。按照那个帖子的地址下载一个DLL并且引用到你的网站,就可以运行一下测试页面来测试:<%@ Page Language="C#" %><%@ Import Namespace="System.Threading" %><script runat="server"> private Random Rnd = new Random(); protected void Page_Load(object sender, EventArgs e) { Parallel.Invoke(方法1, 方法2); //如果你有100个并行方法,也可以一直作为Invoke的参数写下去。 方法3(); //测试结果可以看到:尽管没有任何延时,但是方法3的执行时间永远不会在方法1和方法2之前。 } private void 方法1() { Thread.Sleep(Rnd.Next(1000)); this.Label1.Text = DateTime.Now.ToString("tt h:m:s.fff"); } private void 方法2() { Thread.Sleep(Rnd.Next(1000)); this.Label2.Text = DateTime.Now.ToString("tt h:m:s.fff"); } private void 方法3() { this.Label3.Text = DateTime.Now.ToString("tt h:m:s.fff"); }</script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>演示Paralle基本方法</title></head><body> <form id="form1" runat="server"> <asp:Label ID="Label1" runat="server" EnableViewState="false"></asp:Label><br /> <asp:Label ID="Label2" runat="server" EnableViewState="false"></asp:Label><br /> <asp:Label ID="Label3" runat="server" EnableViewState="false"></asp:Label><br /> </form></body></html>这里,方法1和方法2是并行执行的,运行完之后才执行方法3。 最好使用观察者模式namespace WindowsApplication1{ public interface Observer { void Response(); //观察者的响应,如是老鼠见到猫的反应 } public interface Subject { void AimAt(Observer obs); //针对哪些观察者,这里指猫的要捕捉的对象——老鼠 } public class Mouse : Observer { private string name; public Mouse(string name, Subject subj) { this.name = name; subj.AimAt(this); } public void Response() { MessageBox.Show(name + "马上逃跑!"); } } public class Master : Observer { public Master(Subject subj) { subj.AimAt(this); } public void Response() { MessageBox.Show("被吵醒!"); } } public class Cat : Subject { private ArrayList observers; public Cat() { this.observers = new ArrayList(); } public void AimAt(Observer obs) { this.observers.Add(obs); } public void Cry() { MessageBox.Show("猫叫!"); foreach (Observer obs in this.observers) { obs.Response(); } } } public partial class Form1 : Form { public Form1() { Cat MyCat = new Cat(); Mouse Mymouse1 = new Mouse("mouse1", MyCat); Mouse Mymouse2 = new Mouse("mouse2", MyCat); Master Mymaster = new Master(MyCat); MyCat.Cry(); } }}这是一个.net的笔试题! 为何不能发送邮件 如何在服务器端动态生成图片? 奇怪的问题:新建了一个aspx,但却没有“查看代码”|CSS对2个控件的效果不一样 我用VS调试的时候不能显示图片?为什么? 各位大侠帮我看看这个配制文件是如何工作的? 好心朋友传个web源码(C#.NET)给我感谢 [email protected] 利用.net 提供的上传附件功能,如何实现跨服务器上传? 连接SQL的问题!!! 关于网页信息采集问题,希望大家给我说一下思路,有实例源码更好 我这有一个功能强大的在线HTML编辑器,请问如何把转换成ASP.NET控件?(请叫高手) 【帮顶有分】我应该补充哪方面的知识 一个小问题,求帮忙
private Random Rnd = new Random();
protected void Page_Load(object sender, EventArgs e)
{
Parallel.Invoke(方法1, 方法2); //如果你有100个并行方法,也可以一直作为Invoke的参数写下去。
方法3(); //测试结果可以看到:尽管没有任何延时,但是方法3的执行时间永远不会在方法1和方法2之前。
} private void 方法1()
{
Thread.Sleep(Rnd.Next(1000));
this.Label1.Text = DateTime.Now.ToString("tt h:m:s.fff");
} private void 方法2()
{
Thread.Sleep(Rnd.Next(1000));
this.Label2.Text = DateTime.Now.ToString("tt h:m:s.fff");
} private void 方法3()
{
this.Label3.Text = DateTime.Now.ToString("tt h:m:s.fff");
}
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>演示Paralle基本方法</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" EnableViewState="false"></asp:Label><br />
<asp:Label ID="Label2" runat="server" EnableViewState="false"></asp:Label><br />
<asp:Label ID="Label3" runat="server" EnableViewState="false"></asp:Label><br />
</form>
</body>
</html>
这里,方法1和方法2是并行执行的,运行完之后才执行方法3。
{
public interface Observer
{
void Response(); //观察者的响应,如是老鼠见到猫的反应
} public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要捕捉的对象——老鼠
} public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
MessageBox.Show(name + "马上逃跑!");
}
} public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
MessageBox.Show("被吵醒!");
}
} public class Cat : Subject
{
private ArrayList observers; public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
} public void Cry()
{
MessageBox.Show("猫叫!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
} public partial class Form1 : Form
{
public Form1()
{
Cat MyCat = new Cat();
Mouse Mymouse1 = new Mouse("mouse1", MyCat);
Mouse Mymouse2 = new Mouse("mouse2", MyCat);
Master Mymaster = new Master(MyCat);
MyCat.Cry();
}
}
}这是一个.net的笔试题!