我正在移植一个具有非常长的加载时间的程序,当我移植它时根本没有改进,因为缓慢是因为访问数据库服务器(而不是次优代码).我已经将加载移动到与Tasks库的单独线程上,现在UI在加载时不会冻结,但它确实让我对某些东西感到好奇:
该Task.Factory对象有一个方法StartNew,该方法应该创建一个新任务,启动它并返回对它的引用.这是有道理的,但似乎Task构造函数完全相同.
当我执行以下操作时:
Task catsFromDB = new Task(() => AddCategoriesFromDB(cts.Token), cts.Token);
catsFromDB.Start();
Run Code Online (Sandbox Code Playgroud)
我得到一个InvalidOperationException我真的不明白的错误.它似乎相信我已经把它踢掉了.我还没有.
[编辑]
erorr是:"InvalidOperationException,可能无法在已完成的任务上调用Start"
[编辑]
错误是我包含的一些取消代码.我需要在尝试再次运行之前重置取消.
这是在iOS上.
我有一个核心数据库,有大约35万个对象.对象(Product)有两个属性:"条形码"和"指定".用户可以通过搜索"条形码"来搜索对象,并且应该返回"指定".一切都很好,除了它很慢.我使用的代码是:
NSEntityDescription *_product = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:importContext];
NSFetchRequest *fetch = [[NSFetchRequest alloc]init];
[fetch setEntity:_product];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"Barcode == %@",theBarcode]];
NSError *error = nil;
NSArray *results = [importContext executeFetchRequest:fetch error:&error];
NSManagedObject *object = [results objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
由于我只想获取一个对象,有没有办法加快速度?
如果我在启动时将每个对象加载到一个数组中,那么应用程序的启动速度非常慢,占用大量内存.
提前致谢!
编辑:我添加了[fetch setFetchLimit:1]; 这加快了一点点.但是数据库中对象的速度越来越慢.
我有一个应用程序,我需要在按下一个键时播放一个wav文件,我使用SoundPlayer类,但如果按下一个新键时正在播放另一个声音,它会停止声音再次播放它使它看起来很难看. ...
有没有办法再次播放相同的声音,即使有另一个播放?
谢谢!
我得到这个例外:
java.io.FileNotFoundException: C:\...\filename.xml (The system cannot find the path specified)
Run Code Online (Sandbox Code Playgroud)
使用此代码:
FileWriter fileWriter = new FileWriter(new File(path + date + time "filename.xml"));
BufferedWriter writer = new BufferedWriter(fileWriter);
writer.write("data");
Run Code Online (Sandbox Code Playgroud)
存在路径,但需要创建"日期"和"时间"的目录.应用程序对目录具有完全权限.
有任何想法吗?
我已经阅读了很多帖子,但是当我的应用程序在后台暂停时,我仍然无法实现所需的功能.
我的参考点是这个无线电报警应用程序.
使用本地通知(在上面的无线电时钟中成功实现)我无法做的事情是:
另外我注意到他们能够播放超过30秒的声音甚至是收音机作为闹钟声音,这可能意味着没有使用本地通知(音频方式)
任何见解都会受到批评......
我最初使用Trey Piepmeier的说明安装了GetBundles .之后,我使用GetBundles安装了所有TextMate包.我注意到我的GetBundles副本很旧,所以我做了以下内容:
cd ~/Library/Application Support/TextMate/Bundles/
svn co http://svn.textmate.org/trunk/Review/Bundles/GetBundles.tmbundle/
Run Code Online (Sandbox Code Playgroud)
当我重新启动TextMate并打开GetBundles时,会弹出一个对话框,要求我为许多(如果不是全部)捆绑包选择源.我不记得我安装的Django软件包的版本或其他许多版本.
无论如何更新GetBundles而不让它失去对源的影响吗?
嗨,我有一个简单的脚本,它接受一个文件,并在其上运行另一个Perl脚本.该脚本对当前文件夹中的每个图片文件执行此操作.这是在一台配备2个四核Xeon处理器,16GB内存,运行RedHat Linux的机器上运行的.
第一个脚本work.pl基本上调用magicplate.pl传递一些参数和magicplate.pl文件的名称来处理.Magic Plate需要大约一分钟来处理每个图像.因为work.pl正在执行相同的功能超过100次,并且因为系统有多个处理器和核心,所以我正在考虑将任务拆分,以便它可以并行运行多次.如有必要,我可以将图像分割到不同的文件夹.任何帮助都会很棒.谢谢
这是我到目前为止:
use strict;
use warnings;
my @initialImages = <*>;
foreach my $file (@initialImages) {
if($file =~ /.png/){
print "processing $file...\n";
my @tmp=split(/\./,$file);
my $name="";
for(my $i=0;$i<(@tmp-1);$i++) {
if($name eq "") { $name = $tmp[$i]; } else { $name=$name.".".$tmp[$i];}
}
my $exten=$tmp[(@tmp-1)];
my $orig=$name.".".$exten;
system("perl magicPlate.pl -i ".$orig." -min 4 -max 160 -d 1");
}
}
Run Code Online (Sandbox Code Playgroud) 我使用Inno Setup创建了一个设置,并希望使用Pascal Script查询注册表
if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then
Run Code Online (Sandbox Code Playgroud)
我的设置是32位(我想要安装的软件),但在64位系统上,查询被重定向到 HKCR\Wow6432Node\\Installer\UpgradeCodes
当然,即使它存在,也找不到钥匙.即使我的设置仍为32位,如何检测密钥?
我只需要简单说明一下:
我有一个带球模型的示例应用程序,有两个视图(假设一个视图显示了球,并允许您使用鼠标来调整大小,单击更改其颜色,第二个视图具有一个带有两个子控件的控件(大小文本框和颜色选择器))。
MVVM是说我必须在这里拥有两台VM,一个用于每个特定的View,还是可以在不破坏模式的情况下重用VM?
作为后续问题,如果需要我拥有两个VM是否合法,根据模式,将一个作为另一个的派生类型,或者将两个作为基类的派生类型,或者将其作为基于公共部分的复合类?基本上满足两种类型的需求,但可以提高重用性吗?
我的示例是人为设计的,我试图指出两个视图都影响模型的相同两个属性。两个视图之间的最大尺寸,可用颜色等相同。
谢谢
当我为域设计模型时,它们几乎总是.IsSomething在它们上面有一些功能. IsNew并且IsDirty对于数据持久性目的而言是常见的,IsValid对于业务规则验证,甚至IsFraudulent在当前项目中(更多业务规则验证)等.每当我看到其他人实现这些时,它们几乎总是作为方法完成.但我发现自己想知道是否有特殊原因.
我倾向于将属性描述为描述对象和方法以执行某种操作.这些并不是真正的行动.它们涉及代码,因为它们在被调用时是动态确定的,并且它们显然是只读的,但对我来说它们仍然适合作为属性而不是方法.
我想,可能存在属性的序列化问题.虽然丰富的域模型往往不能很好地序列化,因为它包含逻辑和功能,所以每当我需要在服务边界上移动某些东西时,我通常首先将它扁平化为定义的DTO结构.
但我想知道其他人是否对这个问题有任何见解?是否有充分的理由将这些实现为方法而不是属性?
(切向相关,虽然已经给出了答案,但扩展属性确实有助于在这样的事情上保持一致.我有许多IsSomething()扩展方法,通常System.String用于实现特定于域的逻辑.但即使属性是通过go,我可能想坚持使用方法只是为了与扩展保持一致.)