我必须建立一个程序,使我可以跟踪从一个系统不同的触发点被击中。
-
关联方Id
-
触发器Id
-
参考代码
我的程序是读取这些数据,并调用一个呼叫到附属网站的附属机构跟踪。
所以我一直在尝试让它工作,我能想到的唯一方法是通过WPF或WinForms应用程序使用“WebBrowser”控件。
我担心的是,由于web browser控件是异步的,在我要求web浏览器加载另一个跟踪代码片段之前,它可能不会处理javascript或图像请求。
List<TRACKING_TRANSACTIONS> trackingTransactions = affiliateContext.TRACKING_TRANSACTIONS.Where(at => at.EFFECTIVE_DATE <= DateTime.Now && at.PROCESSED_DATE == null ).ToList();
foreach (TRACKING_TRANSACTIONS transaction in trackingTransactions)
{
if (transaction != null)
{
AFFILIATE_TRIGGERS affiliateTrigger = affiliateContext.AFFILIATE_TRIGGERS.SingleOrDefault(at => at.AFFILIATE_ID == transaction.AFFILIATE_ID && at.TRIGGER_ID == transaction.TRIGGER_ID);
if (affiliateTrigger != null)
{
//do replacements
string trackingCode = ReplaceStringValues(affiliateTrigger.TRACKING_CODE, transaction);
RunWebBrowserTrackingCode(trackingCode);//ConfigurationManager.AppSettings["WebsiteUrl"] + "?trackingTransactionId=" + transaction.TRACKING_TRANSACTION_ID.ToString());
Thread.Sleep(2000);
transaction.PROCESSED_DATE = DateTime.Now;
affiliateContext.SaveChanges();
}
}
}
void RunWebBrowserTrackingCode(string trackingCode)
{
if (!webBrowser.Dispatcher.CheckAccess())
{
webBrowser.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
webBrowser.NavigateToString(trackingCode);
}
));
}
else
{
webBrowser.NavigateToString(trackingCode);
}
}
我主要关心的是
Thread.Sleep(2000);
有人能提出更好的办法吗?我有没有用正确的技术来解决这个问题??