在C#中执行下一个方法之前等待方法完成

时间:2011-12-14 17:40:07

标签: c#

我只是想知道是否有办法使方法等到上一个方法调用完成执行而不使用线程。例如,如果有两个方法调用,

{

   A();

   B();

}

我希望B()仅在A完成时才开始运行。有没有办法在不使用线程的情况下在c#?

中执行此操作

6 个答案:

答案 0 :(得分:3)

如果您没有关闭默认情况下会发生的单独线程。

答案 1 :(得分:3)

不使用线程(只要调用是同步的,这是默认值),这是默认行为。

例如:

Class Foo
{
    var returnVal = A();
    returnVal = B();
    Console.WriteLine(returnVal.ToString());
}

B()只会在A()之后运行,而.ToString()将在B()完成后打印出returnVal的字符串表示。

要使其执行任何其他操作,事实上,您必须使用线程和/或异步调用。

答案 2 :(得分:2)

除非A()启动新线程,否则 正是发生的事情。

答案 3 :(得分:1)

如果顺序执行两个方法,并且它们都不是异步调用的,则第一个方法将阻止执行第二个方法,直到第一个方法返回。

A(); B();实际上会按顺序调用它们。

答案 4 :(得分:1)

这是语句按顺序执行的默认值。方法调用没有区别。

如果用户在方法运行时单击按钮,则情况确实如此。在这种情况下,按钮单击处理程序(如MyButton_Click)将等待执行,直到另一个方法终止其执行。发生这种情况,因为两个方法都在同一个线程上执行,即所谓的UI线程。

答案 5 :(得分:0)

会自动发生。你也可以这样做:

示例:

public static void Main(string[] args){
int i = 0;
i =  A();
i =  B();
System.Console.WriteLine(i);
}

public int A(){
  return 1;
}
public int B(){
  return 2;
}

输出: 2