private static object locker = new object();
private void timer_Execute()
{
if (Monitor.TryEnter(locker))
{
string message = string.Format("在时间 {0} 时刻执行了一次重拨号操作!", DateTime.Now);
ShowSendStatus(message);
string RasName = SystemConfig.Default.RasName;
if (!string.IsNullOrEmpty(RasName))
{
message = string.Format("正在准备重新拨号({0})", RasName);
ShowSendStatus(message);
Portal.gc.ReConnect(RasName);
Portal.gc.FailedCount = 0;//重新归零
}
Monitor.Exit(locker);
}
else
{
Monitor.Enter(locker);
Monitor.Exit(locker);
}
}
上面是主要的任务生成操作以及相关的拨号操作,其中任务详细的生成代码如下所示。
private void WorkItemsProducer()
复制代码 代码如下:
{
CallCtrlWithThreadSafetyEx.SetText(this.txtSendDetail, "");
EnableControl(false, true, true);
string message = string.Format("任务开始");
RecordMessage(message);
#region 生成任务
IWorkItemsGroup workItemsGroup = _workItemsGroup;
if (null == workItemsGroup)
{
return;
}
List<string> addressList = GetAddressList();
List<MyMailInfo> mailInfoList = GetMailInfo();
for (int i = 0; i < addressList.Count; i++)
{
try
{
SendJobInfo jobInfo = new SendJobInfo();
jobInfo.domainList = mailDomainList;
jobInfo.mailTo = addressList[i];
jobInfo.mailInfo = GetOneMail(mailInfoList, i);
jobInfo.ShowSendStatus = ShowSendStatus;
jobInfo.currentDomain = (i % mailDomainList.Count);//设置一个标志,默认那个账户开始发送
jobInfo.UseDirectSendType = SystemConfig.Default.EmailDirectSend;