小编Daz*_*ddy的帖子

WaitHandle.WaitOne可以抛出ThreadAbortException吗?

我收到以下异常:

Exception of type ThreadAbortException occurred: System.Threading.ThreadAbortException: ThreadAbortException 
at System.Threading.EventWaitHandle.WaitOne(Int32 millisecondsTimeout, Boolean exitContext) 
at MyCode.ProcessEvents() 
Run Code Online (Sandbox Code Playgroud)

我对它如何发生感到困惑。尽管我的代码可能会中止另一个线程(包括设置WaitHandle的线程),但我确定我不会中止该特定线程。这使我相信该框架正在引发异常,或者某个线程的线程异常接收正在以某种方式渗入该线程。我认为这两者都是不可能的。

因此,如果我没有在此线程上调用Thread.Abort(),它将如何最终导致ThreadAbortException?

c# multithreading windows-mobile threadabortexception

5
推荐指数
0
解决办法
1257
查看次数

在Jelly Bean上访问其他Android应用程序的资产

我有一对Android应用程序.一个是免费的"读者"应用程序,另一个是付费的"数据"应用程序,其文本文件位于其资产的子目录中.

阅读器应用程序使用以下代码访问数据应用程序的文本文件:

Intent myIntent = new Intent("myintent");
List<ResolveInfo> dataPacks = packageManager.queryIntentActivities(myIntent, 0);
String packageName = dataPacks.get(0).activityInfo.packageName
Resources res = packageManager.getResourcesForApplication(packageName);
AssetManager assets = res.getAssets();
String[] dataFiles = assets.list("Data");
Run Code Online (Sandbox Code Playgroud)

这一直运行良好,但使用Google Play下载到Jelly Bean的应用程序无效(数据文件为空).如果应用程序是直接从电子邮件安装的,那么我很怀疑我的问题与Google Play最近的安全更改有关.然而,据称这些已被撤消,但我仍然遇到问题.

有人能说清楚出了什么问题吗?(不幸的是我没有Jelly Bean设备)

或者,有人可以建议更好的机制来访问数据应用程序的txt文件吗?

谢谢

android google-play android-4.2-jelly-bean

4
推荐指数
1
解决办法
2115
查看次数

如何使用async/await实现命令模式

我目前正在升级一些现有的代码供windows universal使用,我正在努力转换命令模式以使用新的async/await功能.

我有一个命令调度程序类,它在自己的线程中运行并处理已添加到其队列中的命令.有问题的方法如下:

private List<ICommandItem> _items;

private void ProcessCommands()
{
    while(_items.count > 0)
    {
        _items[0].Execute();
        _items.RemoveAt(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我的一些ICommandItem.Execute()方法现在需要异步,因为它们涉及文件io而其他人没有异步方法.我怎么能修改上面的模式,以便:

  1. 我的执行程序可以处理异步和非异步ICommandItems
  2. 执行程序仅在前一个命令完成后才开始执行命令.

我很乐意同步执行这些方法但现在到处都会导致死锁.

c# multithreading asynchronous async-await .net-4.5

3
推荐指数
1
解决办法
2857
查看次数