天道酬勤,学无止境

更改数据提供程序时如何处理来自 Flash tilelist 的 Unhandled #2044 错误?(How to handle Unhandled #2044 errors from Flash tilelist when changing dataprovider?)

问题

我有一个使用基于 ImageCell 的自定义项渲染器的 tilelist 组件。 我知道有时无法找到它试图检索的某些图像,我能够通过自定义 ImageCell 加载器上的 IEOrror 侦听器来处理此问题。

但是,如果我设置了数据提供程序,那么在所有图像完成加载或错误过程之前它会被更改,Flash 调试播放器会在 firefox 中抛出一个未处理的 #2044 错误,指出无法找到图像。 在带有调试播放器的歌剧中,它会抛出 #2044 说明加载从未完成。

我找不到捕获和忽略这些错误的方法,因此它们不会抛出调试器播放器对话框。 此外,当使用 Flash Builder IDE 进行调试时,调试器根本不会因这些错误而中断 - 它仅在播放器中,而我能够毫无问题地中断其他错误。

当数据提供程序更改时,就好像错误侦听器正在被处理,但加载程序继续并抛出未处理的 #2044。

关于如何有效处理的任何想法? 提前感谢您的时间和帮助 -

回答1

在自定义单元渲染器的构造函数中,您需要向受保护的加载程序实例添加一个事件侦听并处理 IOError。

下面是一个例子:

package
{
    import fl.controls.listClasses.ICellRenderer;
    import fl.controls.listClasses.ImageCell;
    import fl.controls.TileList;
    import fl.data.DataProvider;
    import fl.managers.StyleManager;
    import flash.events.EventDispatcher;
    import flash.events.*;
    import fl.containers.UILoader;

    public class CustomImageCell extends ImageCell implements ICellRenderer
    {  

        public function CustomImageCell() 
        {
            super();

            //do other stuff here

            loader.scaleContent = false;
            loader.addEventListener(IOErrorEvent.IO_ERROR, handleErrorEvent, false, 0, true);

            useHandCursor = true;
        }

        override protected function drawLayout():void
        {
            var imagePadding:Number = getStyleValue("imagePadding") as Number;
            loader.move(11, 5);

            var w:Number = width-(imagePadding*2);
            var h:Number = height-imagePadding*2;
            if (loader.width != w && loader.height != h)
            {
                loader.setSize(w,h);
            }
            loader.drawNow(); // Force validation!

        }
        override protected function handleErrorEvent(event:IOErrorEvent):void {
            trace('ioError: ' + event);
            //dispatchEvent(event);
        }
    }
}

这是我进行的一个简单测试,以查看数据提供程序更新时会发生什么:

import fl.controls.*;
import fl.data.DataProvider;
import fl.controls.listClasses.CellRenderer;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

var tileList:TileList = new TileList ();
tileList.move(220,40);
tileList.setSize(215, 400);
tileList.columnWidth = 215;
tileList.rowHeight = 86;
tileList.direction = ScrollBarDirection.VERTICAL;
tileList.setStyle("cellRenderer", CustomImageCell);
addChild(tileList);

tileList.dataProvider = getRandomDP(10);
setTimeout(resetDP,3000);

function resetDP():void {
    tileList.dataProvider = getRandomDP(10);
}
function getRandomDP(size:int):DataProvider {
    var result:DataProvider = new DataProvider();
    for(var i:int = 0; i < size; i++)   result.addItem({label:'item'+i,source:'wrong.url/'+Math.random()});
    return result;
}

HTH

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • How to handle Unhandled #2044 errors from Flash tilelist when changing dataprovider?
    I have a tilelist component using a custom ImageCell based item renderer. I know that at times some of the images it is trying to retrieve will not be found and I am able to handle this via an IEOrror listener on the custom ImageCell loader. However, if I set the data provider, then it is changed before all images have completed their loading or error process, the flash debug player throws up an unhandled #2044 error in firefox stating that an image could not be found. In opera with the debug player it throws a #2044 stating that a load never completed. I can't find a way to trap and ignore
  • 使用任务并行库时如何处理所有未处理的异常?(How to handle all unhandled exceptions when using Task Parallel Library?)
    问题 我在.NET 4.0中使用TPL(任务并行库)。 我想通过使用Thread.GetDomain().UnhandledException事件集中所有未处理的异常的处理逻辑。 但是,在我的应用程序中,对于以TPL代码Task.Factory.StartNew(...)线程,例如Task.Factory.StartNew(...) ,永远不会触发该事件。 如果使用诸如new Thread(threadStart).Start()类的东西,则确实会触发该事件。 该MSDN文章建议在使用TPL时使用Task.Wait()来捕获AggregateException ,但这不是我想要的,因为此机制不够“集中”。 有人遇到过同样的问题吗?还是只有我一个人? 您对此有什么解决方案吗? 回答1 我认为TaskScheduler.UnobservedTaskException事件是您想要的: 当有故障的任务的未观察到的异常即将触发异常升级策略时发生,默认情况下,该策略将终止该进程。 因此,此事件类似于您在问题中提到的DomainUnhandledException ,但仅在任务中发生。 顺便说一句,未观察到的例外策略(是的,这不是不可观察到的例外,MS专家又发明了一个新词……)从.NET 4.0更改为.NET 4.5。 在.NET 4.0中,未观察到的异常导致进程终止,但在.NET 4.5中
  • Android应用程序更新时如何处理多个数据库版本更改(How to deal with multiple database version changes when Android Application update)
    问题 感谢您在这里阅读我的问题。 实际上,当我需要在表中为多个sq-lite版本添加行时,我对如何处理SQLite tables有些困惑。 我在Google上发现了类似的东西,我们必须在onUpgrade方法中更改表。 这将是工作顺序更新。 Suppose i have 3 devices they have below versions of database 1) 1st device = database version 1 2) 2nd device = database version 2 3) 3rd device = application not installed. database version 1 = 2 columns database version 2 = 2+2 columns database version 3 = 4+2 columns. 所以在这里,如果我需要给我的android应用程序用户提供更新,那我该怎么办? 我有以下情况。 1) Updated application would be install in 3rd device where still application is not installed. 2) Application should be update from version 1 to version 3
  • 部署asp.net核心应用程序时如何处理环境差异?(How to deal with environment differences when deploying asp.net core application?)
    问题 部署ASP.NET Core应用程序时是否可以更改环境设置(例如使用调试/发布版本的配置文件转换)? 在.NET Core应用程序中维护多个环境设置的最佳方法是什么(类似于<appSettings file="local.config">用于本地,暂存和生产)? 回答1 中央配置文件是appsettings.json ,您可以有多个文件,例如appsettings.Production.json等,这些文件将被加载并覆盖来自appsettings.json设置。 例如 // Set up configuration sources. var builder = new ConfigurationBuilder() .SetBasePath(hostEnv.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{hostEnv.EnvironmentName}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); 您需要做的就是设置环境类型的环境变量(请参阅此处的文档)。
  • 由于内存而失败时如何处理realloc?(How to handle realloc when it fails due to memory?)
    问题 问题就说明了一切,但这里有一个例子: typedef struct mutable_t{ int count, max; void **data; } mutable_t; void pushMutable(mutable_t *m, void *object) { if(m->count == m->max){ m->max *= 2; m->data = realloc(m->data, m->max * sizeof(void*)); } // how to handle oom?? m->data[m->count++] = object; } 如何处理内存不足而不是所有数据都为NULL? 编辑-假设有什么事情可以做,例如在某处释放一些内存,或者至少告诉用户“您无法做到这一点-您的内存不足”。 理想情况下,我想离开那里分配的东西。 回答1 标准技术是引入一个新变量来保存realloc的返回值。 然后,仅在成功的情况下覆盖输入变量: tmp = realloc(orig, newsize); if (tmp == NULL) { // could not realloc, but orig still valid } else { orig = tmp; } 回答2 这是一个非常热门的话题,因为在该主题上基本上有2种流派 检测OOM,并让该函数返回错误代码。
  • 部署应用引擎应用程序时如何处理敏感配置信息?(How to handle sensitive configuration information when deploying app-engine applications?)
    问题 示例:我有一个应用程序需要访问提供身份验证令牌的 API myApi = MyApi(token=my_private_sensible_token) 我想避免在作为项目一部分的配置文件中使用该私有令牌。 想到的一种解决方案是在由有限数量的授权人员维护的单独代理应用程序中隔离与此服务的交互。 App-engine 允许通过身份验证保护处理程序,我可以轻松地在代理中只允许来自授权的 App-engine 消费者应用程序的调用。 我能想到的不同解决方案,在某些时候都会使这个私有令牌在消费者应用程序内存中可用,这可能允许恶意用户(维护消费者)编写一个处理程序,以某种奇特的方式打印出这个秘密令牌应用程序已检索。 你有更好的建议吗? 回答1 另一种可能的方法是拥有应用程序的 2 个副本(实际上 2 个不同的应用程序恰好具有相同的代码),每个副本都有自己的 app_ID、配置文件等: 一个用于开发/登台,可供更大的开发团队访问一个用于生产- (可能从同一个 SCM 存储库克隆/分叉,也许是一个私有分支?)只能由受信任的开发人员访问,并且配置文件的内容被覆盖/更新以用于生产部署 除了限制对生产凭证的访问之外,这种设置还可以提供额外的好处,例如: 能够使用 CI 系统,包括在非常接近生产环境的自动部署对生产部署的更严格控制
  • 分区时如何处理外键(How to handle foreign key while partitioning)
    问题 我从事车队管理工作。 我在带有以下列的位置表上进行了大量写入 日期时间车辆编号长纬度速度 userid(这是外键...) 这里这个表将每 3 秒进行一次写操作。 因此,其中将有数百万条记录。 因此,为了检索更快的数据,我正在规划分区。 现在我的问题:- 如何处理外键? 听说分区不支持外键应该使用哪一列进行分区。 是否有必要将唯一键作为分区列。 将有万亿记录 @rc-Thanks man..性能如何......看到我每 3 秒插入一次数据,所以我每次插入数据时都必须运行检查程序......那么性能呢???? 2>我想去分区列作为车辆没有.....有什么替代方法... 回答1 阅读:MySQL 分区限制 1.) 分区表不支持 FK。 一种选择是创建一个插入/更新记录的存储过程,并在插入之前验证传递的用户 ID 是否存在于用户表中。 您应该在表上设置权限,以便只允许 SP 更新和插入,以允许应用程序和/或用户对检查进行后门操作。 从用户表中删除用户时,您还需要采取预防措施。 2.) 用于分区的列将取决于您访问表的方式。 如果您的查询始终基于车辆编号,那么对该列进行哈希分区可能是有意义的。 如果您要查询或报告更多关于“本月添加了哪些车辆”之类的内容,或者您​​想在分区达到特定年龄时“推出”分区,那么按日期分区可能是可行的方法。 这是您必须根据您的使用情况来决定的。 3.)
  • 从 AmazonS3 加载 swf - 跨域策略(loading swf from AmazonS3 - crossdomain policy)
    问题 我有一个位于 domainA 中的 Flash 应用程序,它需要加载来自 Amazon S3 存储桶的 swf。 加载时出现以下错误。 "Error #2044: Unhandled securityError:. text= ” 我在存储桶中放入了一个跨域文件,并认为这可以解决问题。 我怎样才能解决这个问题? 回答1 您可以使用存储桶名称 DNS 访问 S3。 因此,它不是 s3.amazon.com/bucketname/filename,而是bucketname.s3.amazon.com/filename。 使用此方法,您可以将自己的跨域文件放在根路径中 <allow-access-from domain="bucketname.s3.amazonaws.com" /> 更好的方法是使用 DNS 服务器上的 CNAME 记录来伪造跨域文件的根。 例如 在您的 DNS 服务器上创建 CNAME 记录以将 bucketname.yourdomainname.com 指向 bucketname.s3.amazon.com 然后将您的跨域文件放在该存储桶根目录中 <allow-access-from domain="bucketname.yourdomainname.com" /> 并将闪存文件称为 bucketname.yourdomainname.com/flash
  • 初始化 AVAudioPlayer 对象时如何处理来自 NSOSStatusErrorDomain 的错误代码 -43?(How to handle error code -43 from NSOSStatusErrorDomain when initializing AVAudioPlayer Object?)
    问题 我在使用 AVAudioPlayer 时观察到奇怪的行为 以下是代码: AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@",fileName]] error: &error]; 在此,我从服务器下载文件并存储在应用程序的 Cache 目录中。 我收到以下错误: Error in playing = Domain = NSOSStatusErrorDomain Code = -43 Description = Error Domain=NSOSStatusErrorDomain Code=-43 "The operation couldn’t be completed. (OSStatus error -43.)" 我还验证了该位置存在文件。 每次我重新启动我的应用程序时,我都会遇到相同的歌曲播放错误。 一段时间后,当我尝试运行相同的代码时,我的播放器运行良好,没有任何错误。 谁能告诉我如何处理这个错误? 另外,谁能解释一下是什么问题? 回答1 我在这段代码中遇到了同样的错误,即使我可以验证 SongCacheURL 是否有效并且该文件是否可用: self
  • 在建模和规范化时如何处理空值?(What to do with null values when modeling and normalizing?)
    问题 我是SQL(仍在学习中)的新手,我必须为场所创建一个数据库。 客户预订活动室。 问题在于客户并不总是提供他们的姓名,电子邮件和电话号码。 在大多数情况下,它是姓名和电子邮件或姓名和电话。 这很少是全部3种,但它确实会发生。 我需要将它们分别存储在各自的属性(名称,电子邮件,电话)中。 但是他们给我他们的信息的方式,我有很多空值。 这些空值怎么办? 有人告诉我最好不要有空值。 之后,我还需要对我的表进行规范化。 有什么建议请。 回答1 SQL根据其3VL(三值逻辑)版本特别对待NULL。 归一化和其他关系理论则没有。 但是,我们可以将SQL设计转换为关系设计,然后再转换为关系设计。 (假设此处没有重复的行。) 规范化发生在关系上,并且是根据不专门处理NULL的运算符定义的。 术语“规范化”具有两个最常见的不同含义:将表放入“ 1NF”和“较高的NF(正常形式)”中。 NULL不会影响“归一化为1NF”。 “归一化为较高的NF”将表替换为连接到该表的较小表。 为了标准化,您可以将NULL视为可空列的域中允许使用的值,除了其SQL类型的值外。 如果我们的SQL表没有NULL,那么我们可以将它们解释为关系,将SQL联接等解释为联接等。但是,如果您分解组件之间共享可空列的位置,那么您就必须在SQL联接上重建SQL中的原始列。相同名称的列相等或都为NULL 。 而且
  • 在GPU上训练时如何处理不确定性?(How to handle non-determinism when training on a GPU?)
    问题 在调整超参数以使模型更好地运行时,我注意到尽管为随机操作固定了所有种子,但每次运行代码时得到的分数(以及因此创建的模型)都不相同。 如果我在CPU上运行,则不会发生此问题。 我在Google上搜索后发现,这是使用GPU进行训练时的常见问题。 这是一个很好/详细的示例,其中包含简短的代码片段,以验证该问题的存在。 他们指出了“ tf.reduce_sum”函数的不确定性。 但是,对我而言并非如此。 可能是因为我使用了不同的硬件(1080 TI)或不同版本的CUDA库或Tensorflow。 似乎CUDA库中有许多不同的部分是不确定的,要弄清楚到底是哪一部分以及如何摆脱它似乎并不容易。 另外,这必须是设计使然,因此很有可能会充分提高效率,以换取非确定性。 所以,我的问题是: 由于GPU在训练NN方面很受欢迎,因此该领域的人们必须有一种处理不确定性的方法,因为我看不到您还能如何可靠地调整超参数。 使用GPU时处理不确定性的标准方法是什么? 回答1 TL; DR 先验确定性操作的非确定性来自并发(多线程)实现。 尽管在这方面不断取得进展,但TensorFlow当前不能保证其所有操作都具有确定性。 在互联网上快速搜索后,情况似乎与其他主要工具包相似。 在训练期间,除非您要调试问题,否则两次跑步之间可以有波动。 不确定性在于培训的本质,明智的做法是测量它,并在比较结果时将其考虑在内
  • 流Http请求的正文时如何处理错误(What to do with errors when streaming the body of an Http request)
    问题 如何处理Http消息中间的服务器错误? 假设我已经发送了邮件的标头,并且正在流式处理邮件的正文,当遇到意外错误时该怎么办。 我还假设此错误是在生成内容时引起的,而不是连接错误。 (极大)简化代码: // I can define any transfer encoding or header fields i need to. send(header); // Sends the header to the Http client. // Using an iterable instead of stream for code simplicity's sake. Iterable<String> stream = getBodyStream(); Iterator<String> iterator = stream.iterator(); while (iterator.hasNext()) { String string; try { string = iterator.next(); catch (Throwable error) { // Oops! an error generating the content. // What do i do here? (In regards to the Http protocol) } send(string); }
  • 获取对象时如何处理“不存在匹配查询”(How to handle “matching query does not exist” when getting an object)
    问题 当我想使用get()函数选择对象时 personalProfile = World.objects.get(ID=personID) 如果get函数没有返回查找值,则“不存在匹配查询”。 发生错误。 如果我不需要此错误,我将使用try和except函数 try: personalProfile = World.objects.get(ID=personID) except: pass 但是我认为这不是自使用以来最好的方法 except: pass 请推荐一些想法或代码示例来解决此问题 回答1 这取决于您不存在时要执行的操作。 有get_object_or_404: 在给定的模型管理器上调用get(),但它引发Http404而不是模型的DidNotExist异常。 get_object_or_404(World, ID=personID) 除了您当前执行的代码外,这与try非常接近。 否则有get_or_create: personalProfile, created = World.objects.get_or_create(ID=personID) 虽然,如果您选择继续使用当前的方法,则至少要确保将except定位到正确的错误,然后根据需要进行一些处理 try: personalProfile = World.objects.get(ID=personID) except
  • 当浏览器没有立即触发 popstate 事件时如何处理后退按钮(How to handle back button when browser is not firing popstate event immediately)
    问题 这个问题可能听起来很奇怪,因为大多数时候 popstate 是在用户按下后退按钮时同步触发的。 但是,W3C 规范声明允许 UA(浏览器)在遍历历史记录时将 popstate 排队(参见第 14 条),即。 popstate是异步触发的(即使此时 URL 已更改)。 浏览器供应商以不同的方式解释和实现此规范。 Mozilla 决定 Firefox 应该能够在load之前触发popstate ,并且有充分的理由,这样慢速图像就不会阻塞popstate 。 Chrome/Safari 另有决定,这导致了我们的问题: 在管理 Web 应用程序的历史记录时,通常希望尽快启动历史记录管理,例如。 在DOMContentLoaded而不是load 。 但作为回报,用户无法退出任何pushState ,因为所有popstate都在排队,直到load 。 我们正在寻求有关处理此类情况的方法的建议。 我自己想了几个: 延迟load图像,因此load可以尽快启动。 阻止 UI,直到load被触发。 load初始化框架而不是DOMContentLoaded 。 有更好的解决方案吗? 更新:当在load之前触发 ajax 时,事情变得很糟糕,如果这些请求导致 DOM 更改,并且 DOM 更改恰好有一些图像, load会延迟到这些图像加载/超时,这意味着popstate排队的时间更长。 更新 2
  • 应用程序在后台时如何处理套接字连接的事件?(How to handle socket connection's events when app is in background?)
    问题 我想在应用程序处于后台时使用以下功能吗? - (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent { case NSStreamEventHasBytesAvailable: { NSLog(@"Event:NSStreamEventHasBytesAvailable"); if (theStream == _inputStream) { NSLog(@"NSStreamEventHasBytesAvailable: on Input Stream"); uint8_t buffer[1024]; int len; while ([_inputStream hasBytesAvailable]) { len = [_inputStream read:buffer maxLength:sizeof(buffer)]; if (len > 0) { NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]; if (nil != output) { NSLog(@"server said: %@", output); // to get
  • 最佳实践:iOS App 创建免费版和付费版时如何处理代码差异?(Best Practice: How to handle code differences for iOS App when creating free and paid version?)
    问题 我想在 AppStore 上发布我的 iOS 应用程序的两个版本。 一个是付费的,另一个是免费的。 截至目前,我的付费应用程序代码已完成。 现在我想为免费应用程序添加更多的 iAd 和 InAppPurchase 代码。 维护这两个版本的最佳方法是什么? 我正在考虑复制 Xcode 项目或在我的 git 存储库中创建一个分支。 回答1 如果您对项目进行分支或复制,那么您将在以后为自己创建维护噩梦。 在同一个项目中创建一个单独的目标,具体的差异可以通过代码中的 #ifdef 块来处理。 向每个目标添加定义以指定您是构建付费版本还是免费版本。 == 添加 == 要定义每个目标符号,请转到目标的构建设置,向下滚动直到找到 Apple LLVM 5.1 - 预处理块,更改特定于目标的设置以添加所需的符号(例如,FREE_BUILD=1 或 PAID_BUILD=1) 要添加目标特定代码,您可以在代码中使用该定义的符号: // some code here #if FREE_BUILD // Some code that only gets compiled for the free target here #elif PAID_BUILD // Some code that only gets compiled for the paid target here #else //
  • Flash 策略文件不起作用(相同的域,不同的端口)(Flash policy file not working (same domain, different port))
    问题 我不知所措。 我不明白为什么 Flash 没有正确加载我的策略文件。 我正在从 Flash Debugger 测试这个。 I've also tried from http://127.0.0.1:80/game (it sends a request to http://127.0.0.1:3014/socket.io/1/). Security.loadPolicyFile('xmlsocket://127.0.0.1:843'); var r:URLRequest = new URLRequest(); r.url = httpProtocal+"://" + domain + "/socket.io/1/?time=" + new Date().getTime(); r.method = URLRequestMethod.POST; var ul:URLLoader = new URLLoader(r); ul.addEventListener(Event.COMPLETE, onDiscover); ul.addEventListener(HTTPStatusEvent.HTTP_STATUS, onDiscoverError); ul.addEventListener(IOErrorEvent.IO_ERROR , onDiscoverError); 错误: >
  • 删除*未保存的*核心数据对象时,如何处理外部数据的清理?(How to handle cleanup of external data when deleting *unsaved* Core Data objects?)
    问题 在一个托管对象中,我已将图像文件的路径存储在应用程序的容器中。 删除托管对象后,图像文件应移至回收站。 这应该尽早完成,以便我可以提供尽可能长的撤消功能。 我一直在关注以下问题的答案:删除Core Data对象时如何处理外部数据的清理,并且在托管对象子类中覆盖了-didSave来丢弃文件。 事实证明,这仅在以下情况下有效: 被管理对象已添加, 被管理对象上下文已保存, 被管理对象已被删除, 被管理对象上下文已保存。 但是,在以下情况下,不会在托管对象中调用-isSaved: 被管理对象已添加, 被管理对象已被删除, 被管理对象上下文已保存。 我知道为什么会这样。 由于删除的对象从来没有一直存在,因此删除后将不会保存该对象,因此不会调用-didSave。 现在,我正在寻找另一个将引用文件移至回收站的位置。 那可能在哪里? 回答1 对于如何使用托管对象方法实现此目标,您有两种选择:使用托管对象生命周期事件或使用验证。 但是,这样做有一定的权衡和风险。还有其他一些方法可能对您更有效(请参阅建议)。 受管对象生命周期 拥有对象的NSManagedObjectContext会观察这些对象。 这是托管对象中的“托管”。 NSManagedObject实例所做的大部分操作实际上是由NSManagedObjectContext执行的。 通过生命周期事件方法将更改通知给托管对象:
  • 如何处理推式通知中的操作按钮(How to Handle Action Buttons in Push Notifications)
    问题 在Apple Watch Notifications上工作:-因此,如果我在Notification Interface(来自对象Lib)中添加按钮,则错误为: 通知界面不支持按钮 PushNotificationPayload.apns具有这样的WatchKit Simulator Actions : "WatchKit Simulator Actions": [ { "title": "View", "identifier": "firstButtonAction" } ], 模拟器向我展示了这一点 现在我的问题是,从服务器发送PushNotification时如何处理此View按钮, 如果aps文件包含“操作”按钮是Apple Watch的唯一选项, 如何使用指定的密钥从通知字典中的服务器发送它? 如何更改“动作”按钮的背景颜色? 会不会有人请给我样品aps文件,其中包括ActionButton对设备the Apple Watch不是为Simulator 我只是通过改变试验WatchKit Simulator Actions键WatchKit Actions键,但它没有显示出操作按钮。 正如@vivekDas在《答案》中所建议的那样,我通过将aps替换为来进行检查: "alert" : { "body" : "Acme message received from
  • 使用WebClient.DownloadFileAsync时如何处理异常(How to deal with exceptions when using WebClient.DownloadFileAsync)
    问题 我正在以下列方式使用WebClient从Internet下载一些文件: try { ManualResetEvent mr = new ManualResetEvent(false); mr.Reset(); using (WebClient wc = new WebClient()) { wc.DownloadFileCompleted += ((sender, args) => { if (args.Error == null) { File.Move(filePath, Path.ChangeExtension(filePath, ".jpg")); mr.Set(); } else { //how to pass args.Error? } }); wc.DownloadFileAsync(new Uri(string.Format("{0}/{1}", Settings1.Default.WebPhotosLocation, Path.GetFileName(f.FullName))), filePath); mr.WaitOne(); } } catch (Exception ex) { //Catch my error here and handle it (display message box) }