具体需求是这样的,从自己的数据库里拿出属于该用户的顾客名单,然后再从qq邮箱里拿出该用户45天内的发件记录进行对比,以15天为一个小周期查询邮件发件箱是否有顾客名单(其中顾客名单包含了最后一次发信息的日期记录)在里面。
我的思路是这样的:先拿出45天的邮件,然后提取每个收件人最新的一封邮件,然后用foreach对两个list进行匹配,看顾客名单记录和邮件记录相差多远,再根据顾客时间记录相差多少个15天进行业务处理。
那么我用的是MailKit这个控件进行查询45天的邮件总量大概最少一千张左右(仅包含从qq邮箱服务器到本机获取邮箱列表的时间)。原来大概5分钟才能处理完毕,然后开了几个task缩成2分钟左右。我知道用foreach去对比两个list是一件很蠢的事情,还有用task也不是最优解,那么诚心请问有没有更好的办法能缩短这个时间呢?,最后,作为新手, 各位老师在日常工作中是如何尽量把自己写bug的概率降低到最低的呢?
我的思路是这样的:先拿出45天的邮件,然后提取每个收件人最新的一封邮件,然后用foreach对两个list进行匹配,看顾客名单记录和邮件记录相差多远,再根据顾客时间记录相差多少个15天进行业务处理。
那么我用的是MailKit这个控件进行查询45天的邮件总量大概最少一千张左右(仅包含从qq邮箱服务器到本机获取邮箱列表的时间)。原来大概5分钟才能处理完毕,然后开了几个task缩成2分钟左右。我知道用foreach去对比两个list是一件很蠢的事情,还有用task也不是最优解,那么诚心请问有没有更好的办法能缩短这个时间呢?,最后,作为新手, 各位老师在日常工作中是如何尽量把自己写bug的概率降低到最低的呢?
{
//发件人
public string FromMail;
//收件人
public string ToMail;
//日期
public datetime MailDate;
//主题
public string title;
//内容
public string body;
}
而取邮件后生成List<smail>,并按你要对比的信息排序,比如你按发件人查找,写一Find方法(这种情况二分法最好),再按你的客户名单对邮件List<smail>进行遍历(使用Find方法),得出信息结果,并记入客户名单
这种想法我也有,但是想请教一下如何保证数据库里的信息能和邮箱里的信息同步?因为用户是会随时随地打开页面的。
另外按照版主大人说的持久到数据库里,那么总是会有第一次打开qq邮箱获取邮件这个操作,那么最关键的从uid变成邮箱实际信息这个转换耗时过长的操作有没有什么好的方法?