【发布时间】:2012-03-21 16:49:09
【问题描述】:
我创建了一个简单的表单,该表单正在加载一个包含电子邮件、姓名、城市等几列的 csv 文件,并且我正在尝试通过我拥有的 2 个 smtp 服务器向它们发送每日更新。我想使用后台工作程序,因为它是进度功能(对于我拥有的进度条),但我还在这个网站上看到还有其他替代方案,如任务、线程或线程池。
我还读到必须使用异步方法发送电子邮件。我不知道这是否可能或是否针对性能进行了优化,但我正在尝试执行以下操作:
对于每个 smtp,我想使用一个线程来读取 csv 文件中的 10 行, 按字段拆分行并将信息发送到另一个线程,该线程会将消息发送到该小列表中的每封电子邮件。我想这样做是为了为每个 smtp 身份验证程序节省一些宝贵的时间。
因为每次连接到每封电子邮件的 smtp 都需要整个套接字过程,例如 HELO、AUTH、DATA。如果我要发送电子邮件列表,我可以在身份验证后保持套接字打开,并且只更改我发送的数据。 10 行只是一个可以自定义更改的变量。 因此,每个 smtp 有 2 个任务,总共意味着 4 个,或者可以根据我将使用的 smtp 数量增加。
我还可以为每个任务或后台工作人员使用额外的线程吗?
我有点困惑,因为我是 c# 新手,但我还没有找到任何关于此的示例。自从我试图了解 backgroundworker/threads 如何工作但仍然没有成功以来,已经有一个多星期了。任何帮助都将不胜感激,任何比我更好的想法来提高性能谢谢!
【问题讨论】:
标签: c# multithreading sockets smtp backgroundworker