连接池重构

随着 Aspose.Email 19.3 版的发布,连接池已被重构。新的 EmailClient 已引入的类将最终取代 CredentialsByHostClient 类。该 EmailClient 类提供了一个 ConnectionAsgmtMode 属性,用于定义多线程环境下的连接分配模式。 EmailClient.ConnectionAsgmtMode 使用以下方式设置 ConnectionAsgmtType 可枚举。

连接类型

以下有三种连接类型:

连接分配类型

设置 EmailClient.ConnectionAsgmtMode 属性, ConnectionAsgmtType 使用可枚举。以下提供的分配类型 ConnectionAsgmtType 列举如下。

  • ConnectionAsgmtType.UseMainOrDefault 此模式是电子邮件客户端的默认使用方式。如果未创建默认连接,或未显式将连接作为方法参数传入,电子邮件客户端将在多线程的所有操作中使用主连接。主连接是在创建电子邮件客户端的同时创建的连接。用户可以使用 CreateConnection 方法。如果为线程创建了默认连接,则该连接会隐式用于该线程中调用的所有电子邮件客户端方法。如果未为线程创建默认连接,则主连接用于该线程中调用的所有电子邮件客户端方法。用户还可以使用 CreateConnection 方法。如果用户想使用其他连接(非主连接也非默认连接),必须将该连接显式作为所调用方法的参数传入。用户还可以额外创建任意数量的连接。每个线程只能有一个默认连接。请注意,如果用户使用 Thread 对象进行多任务编程,默认连接可以正常工作。如果用户使用 ConnectionPool 或 Task 对象进行多任务编程,此模式可能导致应用程序行为错误。为避免此问题,用户必须在代码执行结束时手动释放默认连接(如果使用了它)。
  • ConnectionAsgmtType.UseMain 电子邮件客户端在多线程的所有操作中使用主连接。主连接是在创建电子邮件客户端的同时创建的连接。用户不能创建默认连接。用户可以使用 CreateConnection 方法。如果用户想使用其他连接(非主连接也非默认连接),必须将该连接显式作为所调用方法的参数传入。 
  • ConnectionAsgmtType.UseDefault 电子邮件客户端在多线程的所有操作中仅隐式使用默认连接。主连接在此模式下不被使用。如果某线程尚未创建默认连接(首次调用电子邮件客户端方法时),电子邮件客户端会在执行第一次操作之前为该线程隐式创建默认连接。用户无法使用 CreateConnection方法,因为它们是自动创建的。当为线程创建默认连接时,该连接会隐式用于该线程中调用的所有电子邮件客户端方法。用户还可以使用 CreateConnection方法。如果用户想使用其他连接(非主连接也非默认连接),必须将该连接显式作为所调用方法的参数传入。用户还可以额外创建任意数量的连接。每个线程只能使用一个默认连接。请注意,如果用户使用 Thread 对象进行多任务编程,默认连接可以正常工作。如果用户使用 ConnectionPool 或 Task 对象进行多任务编程,此模式可能导致应用程序行为错误。为避免此问题,用户必须在代码执行结束时手动释放默认连接。