嗨,我需要每分钟更新一次瓷砖的图像,但我找不到任何解决方案。我看过this,但我无法让它发挥作用。
图块中的图片从网络加载两次,但之后不再加载;如何每分钟更新瓷砖中的图像?
例如:Here,我的磁贴和数字是网络服务器上的图像,我需要每分钟刷新一次这些图像,包含任何新图像。
public static void CreateSchedule()
{
var tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();
var plannedUpdated = tileUpdater.GetScheduledTileNotifications();
DateTime now = DateTime.Now;
DateTime planTill = now.AddHours(4);
string src1 = "http://mysite/squareLogo128.png";
DateTime updateTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0).AddMinutes(1);
if (plannedUpdated.Count > 0)
updateTime = plannedUpdated.Select(x => x.DeliveryTime.DateTime).Union(new [] { updateTime }).Max();
string xml = "<tile>"
+ "<visual>"
+ "<binding template='TileWideImageAndText01'>"
+ "<text id='1'>This tile notification uses web images</text>"
+ "<image id='1' src='" + src1 + "' alt='Web image'/>"
+ "</binding>"
+ "<binding template='TileSquareImage'>"
+ "<image id='1' src='" + src1 + "' alt='Web image'/>"
+ "</binding>"
+ "</visual>"
+ "</tile>";
XmlDocument documentNow = new XmlDocument();
documentNow.LoadXml(xml);
tileUpdater.Update(new TileNotification(documentNow) { ExpirationTime = now.AddMinutes(1) });
for (var startPlanning = updateTime; startPlanning < planTill; startPlanning = startPlanning.AddMinutes(1))
{
Debug.WriteLine(startPlanning);
Debug.WriteLine(planTill);
try
{
string src2 = "http://mysite/squareLogo128.png";
string xml2 = "<tile>"
+ "<visual>"
+ "<binding template='TileWideImageAndText01'>"
+ "<text id='1'>This tile notification uses web images</text>"
+ "<image id='1' src='" + src2 + "' alt='Web image'/>"
+ "</binding>"
+ "<binding template='TileSquareImage'>"
+ "<image id='1' src='" + src2 + "' alt='Web image'/>"
+ "</binding>"
+ "</visual>"
+ "</tile>";
XmlDocument document = new XmlDocument();
document.LoadXml(xml2);
ScheduledTileNotification scheduledNotification = new ScheduledTileNotification(document, new DateTimeOffset(startPlanning)) { ExpirationTime = startPlanning.AddMinutes(1) };
tileUpdater.AddToSchedule(scheduledNotification);
}
catch (Exception e)
{
}
}
}
答案 0 :(得分:1)
我在这里假设你看到了Debug.WriteLine
输出,并且你已经确认你没有吞掉空catch
中的例外。
您是否尝试过Fiddler?由于你一遍又一遍地请求相同的图像,我想知道它是否是从本地缓存中提供的(尽管为什么你会看到正确的两次有点神秘)。
如果您使用随机查询字符串,请说
string src2 = "http://mysite/squareLogo128.png" + "?" + Guid.NewGuid().ToString();
可能会欺骗缓存(并且是一个快速测试,看看这可能是问题)。如果它(并且它不是你可以控制的AFAIK),更好的选择是在图像检索(通过服务)上设置响应头,该头将设置适当的无缓存头;否则,你正在用永远不会重复使用的图像填充缓存。
请查看my blog post on image handling with notifications,特别是“云中的图片”部分,了解更多内容。