与标题中一样,当代码执行BackgroundAgent时,当我在主应用程序中执行代码时,它不会被触发.
这是我的代码:
var background = new BitmapImage(new Uri(uri), UriKind.Absolute)){ CreateOptions = BitmapCreateOptions.None };
background.ImageFailed += (s, e) =>
{
    Debug.WriteLine(e);
    // Nothing happens here so I guess that there's no error in the image loading
};
background.ImageOpened += (s, e) =>
{
    Debug.WriteLine("ImageOpened");
    // This line is never printed no the event is never thrown
};
Everthing正在一个Dispatcher线程中运行,我正在尝试加载远程图像(我无法缓存它,因为它是由php页面生成的动态图像).
任何提示?
编辑:
这是基于@ l3arnon建议的代码:
var backgroundImage = new BitmapImage { CreateOptions = BitmapCreateOptions.None };
backgroundImage.ImageOpened += (s, …我有一个使用的互联网广播应用程序BackgroundAudioPlayer.
我需要音频播放代理中的一个计时器,它将更新从Internet广播电台的API中提取的BAP当前播放曲目的曲目标题.
添加DispatcherTimer到音频播放代理程序给我一个跨线程异常,并使用:
Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                // Code
            });
没工作.
我需要这里的代码,因为如果我将更新代码放在应用程序本身,当用户导航离开应用程序时,更新会停止(与Windows 8的行为非常不同).
我不能使用预定代理,因为它们每30分钟只运行一次(IIRC).
这是可能的还是不能在Windows Phone上完成?
c# dispatchertimer background-agents background-audio windows-phone-8
我在后台任务中编写了隔离存储空间.这样做的原因是,在后台任务的每次运行中我都会下载数据,我需要在下次运行后台任务时比较这些数据.如果数据已更改,则会显示Toast通知.
问题是我写入隔离存储的数据没有保存.我可以在OnInvoke函数的其余部分中使用它,但是下次运行后台任务时,该值就消失了.
我在这里遗漏了什么,我觉得这很容易吗?
编辑:读取值工作得很好,从我的主应用程序写入值也很好用我在OnInvoke函数中使用的代码是这样的:
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
settings["WebValue"] = gtResult[i];
我正在为芒果安排一个预定的后台代理(7.1)
我已经设法使用手动跟踪技术将内存使用率从10.5MB降低到6.5MB,DeviceStatus.ApplicationPeakMemoryUsage同时还有一些关于优化内容的智能猜测.
但是,现在我需要降到6MB以下 - 最后的0.5MB是难以捉摸的.
我已经设法在主应用程序上运行" Windows Phone性能分析 "工具,但似乎找不到让它与代理运行的方法.
是否有任何工具和/或技术可以帮助我解决填补我代理人记忆的问题?理想情况下,我想要一种方法来调查整个内存空间 - 包括代码和数据,理想情况下它应该适用于发布版本.
我一直在尝试让资源密集型任务后台代理在部署到手机上几天后才能在发布模式下运行,并且从未见过它运行过.有没有人让这个在调试器之外工作?在跑步前你需要等多久?
我能够使用LaunchForTest启动并成功运行资源密集型任务,但是从未让它在发布模式下运行,即使任务显示已安排.我已按照样品进行操作,手机应符合发射要求.我已将清单设置为自动上传,因此不需要在任务上设置过期日期.
手机已插上电源,充电和电池均为100%.手机有wifi接入.这个电话在锁定屏幕上,并且这样过了两晚.
我在诺基亚Lumia 920和HTC699OL上都试过这个
我能够运行一个Periodic Task而不是资源密集型任务.如果Periodic运行,我假设我已经在WMAppManifest中正确配置了所有内容,并且资源密集型任务应该在某个时刻运行?
资源密集型任务显示以下内容:
该应用程序显示在"设置">"后台任务">"高级"中.
运行Store Kit测试显示电话应用程序没有API调用问题,我从主电话应用程序项目中引用了代理项目.
以下是代理的WMAppManifest设置:
<ExtendedTask Name="BackgroundTask">
    <BackgroundServiceAgent Name="SML.Sync.WP8.Agent" Specifier="ScheduledTaskAgent" Source="SML.Sync.WP8.Agent" Type="SML.Sync.WP8.Agent.BackgroundUploadAgent" />
</ExtendedTask>
根据MSDN文档,这似乎是正确的:MSDN任务元素文档
以下是自动上传扩展,它位于令牌节点之后:
<Extensions>
  <Extension ExtensionName="Photos_Auto_Upload" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
</Extensions>
我也尝试过没有自动上传设置,并且具有从不运行的相同结果.
我也尝试从这里获取示例http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202941(v=vs.105).aspx运行但是在删除debug_agent并部署为发布后模式,我看到同样的问题,即使它说它的预定 - 周期确实运行不是资源密集型,也永远不会运行.
我知道文档说它可能永远不会运行但看起来好像已经过去2天了,满足任务要求应该有效.我需要等一个星期来看看这个吸盘是否运行?
如果您已经获得资源密集型任务以实际在发布模式下运行,那将非常感谢任何指导或提示.
我试图理解为什么即使在周期性任务执行的25秒限制之后也会调用NotifyComplete()方法.
据我所知,如果在25秒内没有调用notifyComplete(),则该任务将被终止,但这不是正在发生的事情.60秒后仍会调用NotifyComplete().
protected override void OnInvoke(ScheduledTask task)
{ 
    Thread.Sleep(60000); // 60 Seconds
    NotifyComplete();
}
任何想法?,我在某种程度上误解后台代理的工作方式?谢谢!
**
找到解决方案
 
由于这是一个瓷砖,因此图像总是会被173扩展到173!
为了避免这种情况,首先用173创建一个虚拟173,并将其与调整大小的一个合并!
Rect rect = new Rect(0.0, 0.0, width, height);
WriteableBitmap bitmapDummy = new WriteableBitmap(173, 173);
bitmapDummy.Blit(rect, resized, rect, WriteableBitmapExtensions.BlendMode.None);
**
我已经创建了一个后台代理来更新我的WP7应用程序的实时磁贴.但无论我试图调整大小,我都没有取得好成绩!
有小费吗?目前我有以下代码,但我也试过135乘173和其他插值.
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage);
var resized = writeableBitmap.Resize(173, 173, System.Windows.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);
下面还添加了一个小矩形来显示应用程序的标题!它的高度为40像素,如果将图像裁剪在上面会很棒.实际图像总是250 x 321px


大约一周前,我为Windows Phone商店提交了一个在线背景广播流媒体应用程序.应用程序非常好(因为我使用模拟器测试它,它在所有可能的部门都很好)但是当我提交它进行认证时,它失败了.
根据错误日志,如果有人已经从音乐+视频中心播放音乐,然后尝试打开此应用程序,则两个应用程序都会崩溃并意外停止.
到目前为止,据我所知,这是因为音乐音乐+视频中心也是背景音乐,同时播放2个背景音乐,应用程序正在崩溃.这可能是其他原因,但所描述的似乎对我更合乎逻辑.
那么,有没有人可以告诉我如何更改音乐+视频中心的应用程序状态?我想暂时暂停或停止音乐+视频中心的应用程序,以便应用程序的两个状态都不相同.通过这种方式,应用程序不会在后台相互冲突.
谁可以在这方面帮助我?
我正在调查Windows Phone 8 SKD,以获取有关如何创建任务(即精确的FTP写入)的示例,即使应用程序在后台也会定期执行.
该文档将我指向后台代理,因为后台传输服务"仅支持使用HTTP和HTTPS进行传输.不支持FTP".我一直在尝试和测试样本,一切都在工作(或多或少),除了无法设置后台代理事件时间.根据文档"定期代理通常每30分钟运行一次",并且没有方法/类/构造函数具有时间/日期参数.您有ScheduledActionService.LaunchForTest(任务,时间),但它仅在调试时使用,而不是在生产中使用,并且可以使MS从市场上拒绝您的应用.
是否有任何解决方案或解决方法让我的代理每分钟都启动?
我刚刚看到,虽然Windows Phone 7.5后台任务可以轮询某个位置,但它们实际上并不是从GPS实时轮询,而是位置API调用返回系统缓存位置,该位置仅每15分钟更新一次.
当然,这种限制完全无效导致在后台运行导航的任何尝试,因为你可以在十五分钟内远离偏离轨道,更不用说后台任务只能每三十分钟左右运行一次!
尽管如此,诺基亚的导航软件,据说透过Runtastic的应用也继续在后台运行跟踪(即不只是在锁屏),无一不是在市场这意味着他们已被批准,所以没有人知道他们是如何做的SDK据说不支持?
作为参考,我们实际上并不需要实时跟踪...可能只需要一次,但我们不需要那么多准确度......也许需要100英尺左右...但我们确实需要比我们更多被给予了.我们只是不知道他们是如何在批准的应用程序中这样做的.
location background-process windows-phone-7 background-agents