任何人都可以解释以下代码,尤其是以下行:starter += () => {
。我不确定它的功能以及整个代码的工作方式。
private void RunNetworkCheckThread()
{
ThreadStart starter = CheckNetwork;
starter += () =>
{
if (!_withNetwork)
{
RunNetworkCheckThread();
}
else
{
StartDrive();
}
};
threadNetwork = new Thread(starter) { IsBackground = true };
threadNetwork.Start();
}
答案 0 :(得分:3)
ThreadStart是一种委托类型,可以容纳许多函数/方法。 符号()=> {}用于定义由操作员+ =
添加到您的委托中的方法答案 1 :(得分:3)
更容易阅读:
private void RunNetworkCheckThread(){
ThreadStart starter = () =>
{
CheckNetwork();
if (_withNetwork) StartDrive();
else RunNetworkCheckThread();
};
threadNetwork = new Thread(starter) { IsBackground = true };
threadNetwork.Start();
}
PS 此处提供了有关合并委托的更多信息: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/how-to-combine-delegates-multicast-delegates
答案 2 :(得分:2)
ThreadStart启动器是委托。 CheckNetwork是目标方法。以下也是目标方法
() =>
{
if (!_withNetwork)
{
RunNetworkCheckThread();
}
else
{
StartDrive();
}
};
starter + =()-这就是使Starter多播委托的原因 How to: Combine Delegates
此行threadNetwork.Start()在同一线程中调用两个委托。因此CheckNetwork和Action方法正在同一新线程中执行。