假设我有一个像
这样的简单程序 DatePickerDialog mDatePicker = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
year = selectedyear;
month = selectedmonth;
day = selectedday;
stardate.setText(new StringBuilder().append(day).append("-").append(month + 1).append("-").append(year).append(" "));
}
}, year, month, day);
mDatePicker.setTitle("Please select date");
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
mDatePicker.show();
}
});
这技术上是否会“同步”,尽管它运行的后台线程在下一个工作单元(public static main(string[] args)
{
Task<int> hotTask = Task<int>.Run(() => SomethingThatRunsInBackgroundAndReturnsAnInt());
DoIndependentWork();
hotTask.Wait();
Console.WriteLine(hotTask.Result);
}
)启动并完成之前不需要完成?我无法在互联网上找到一个非常好的技术定义。
答案 0 :(得分:3)
根据这个: Asynchronous vs synchronous execution, what does it really mean?
当您同步执行某些操作时,请等待它完成 然后继续进行另一项任务。当你执行某些事情 异步地,您可以在完成之前继续执行另一项任务。
在您的情况下,您执行SomethingThatRunsInBackgroundAndReturnsAnInt()
并且你不等待任务结束,而是执行另一个函数,这意味着它是一个异步程序
答案 1 :(得分:0)
也许这是一个缺点,但我会说你的程序使用异步操作,但不是本身异步。这是因为程序的main
方法在程序完成处理之前不会返回。
当我们谈论异步方法时,我们不是在谈论使用多个线程的方法;我们正在讨论一种在工作完成之前几乎立即返回的方法。同样,对于一个程序,我们不是在讨论一个使用多个线程的程序,而是一个几乎立即返回并在工作完成之前返回的程序。
异步程序的一个例子是Windows Service。操作系统将调用服务的OnStart
方法,该方法几乎立即返回。同时,该服务维护另一个线程,它以异步方式完成主要工作。
因此,您的计划不符合定义。