我读了一个代码来发送电子邮件,这里是其中的一部分:
MailUserState state = new MailUserState()
{
AutoReleaseSmtp = m_autoDisposeSmtp,
CurMailMessage = mMailMessage,
CurSmtpClient = m_SmtpClient,
IsSmpleMail = true,
UserState = AsycUserState,
};
if (m_autoDisposeSmtp)
m_SmtpClient = null;
ThreadPool.QueueUserWorkItem((userState) =>
{
MailUserState curUserState = userState as MailUserState;
curUserState.CurSmtpClient.SendAsync(mMailMessage, userState);
}, state);
Run Code Online (Sandbox Code Playgroud)
为什么lambda表达式没有返回值?
我认为它应该返回一个callback实例对象.但它没有返回语句.为什么?
为什么lambda表达式没有返回值?
该ThreadPool.QueueUserWorkItem方法的第一个参数是一个WaitCallback委托,如下所示:
public delegate void WaitCallback(object state)
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到它是一个带有一个对象参数且没有返回值的函数.这正是代码中的lambda表达式.QueueUserWorkItem如果/当可用时,该方法将从线程池中绘制一个线程,它将在该线程的回调中执行代码.没有回报价值.
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |