与TWAIN通信的哪些部分可以放入另一个线程,例如BackgroundWorker?或者:是否可以拆分处理图像传输的循环?
某些扫描仪驱动程序会在返回调用应用程序之前扫描所有图像,这会强制应用程序立即处理所有图像.这导致例如OutOfMemoryException或我的WPF应用程序中的奇怪行为,当突然所有事件(在每个扫描图像之后引发)必须立即处理.此外,应用程序会挂起,直到传输完成.
我正在使用TwainDotNet:http://code.google.com/p/twaindotnet/但我也在寻找一个通用的解决方案,描述消息过滤器以及与TWAIN独立的TwainDotNet的交互.包含TWAIN消息的工作流程就足够了.其他语言也很受欢迎,比较喜欢C或Deplhi.
DataSourceManager中消息过滤器的当前实现可以描述如下:
我用几台扫描仪测试了这个:
我不关心显示问题,而是关注被阻止的窗口和内存问题.将将图像传输到BackgroundWorker的循环导致几次崩溃,我无法调试.因为我考虑了WPF的线程问题.我也不知道如何拆分传输循环,这样,在传输一个图像后,程序返回到消息过滤器,消息可以标记为已处理.
应该进入模型的东西也可以进入视图模型,即公共属性,IDataErroInfo和INotifyPropertyChanged,那么实际应该进入模型的是什么?
我有一个使用窗体身份验证设置为45分钟超时的asp.net 4.0应用程序。我想在会话过期后将用户重定向到超时页面。谁能告诉我该怎么做?我正在运行.net 4.0。
web.config具有:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="~/Login.aspx"
defaultUrl="~/Default.aspx" protection="All" timeout="45"
requireSSL="false">
</forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)
Global.asax.cs文件具有:
void Session_End(object sender, EventArgs e)
{
Response.Redirect("~/Timeout.aspx");
}
Run Code Online (Sandbox Code Playgroud) 我发现了一个有趣的浮点问题.我必须在我的代码中计算几个平方根,表达式如下:
sqrt(1.0 - pow(pos,2))
Run Code Online (Sandbox Code Playgroud)
其中pos在循环中从-1.0到1.0.-1.0对于pow来说很好,但是当pos = 1.0时,我得到了一个-nan.做一些测试,使用gcc 4.4.5和icc 12.0,输出
1.0 - pow(pos,2) = -1.33226763e-15
Run Code Online (Sandbox Code Playgroud)
和
1.0 - pow(1.0,2) = 0
Run Code Online (Sandbox Code Playgroud)
要么
poss = 1.0
1.0 - pow(poss,2) = 0
Run Code Online (Sandbox Code Playgroud)
显而易见,第一个会出现问题,而是消极的.任何人都知道为什么pow返回的数字小于0?完整的违规代码如下:
int main() {
double n_max = 10;
double a = -1.0;
double b = 1.0;
int divisions = int(5 * n_max);
assert (!(b == a));
double interval = b - a;
double delta_theta = interval / divisions;
double delta_thetaover2 = delta_theta / 2.0;
double pos = a;
//for (int i …Run Code Online (Sandbox Code Playgroud) 我正在使用JQuery 1.4.4和jQuery UJS rails.js(https://github.com/rails/jquery-ujs)制作Ruby On Rails 3.0.3应用程序
我有脚手架生成的模型/视图/控制器 - 文档,我在app/views/documents/index.html.haml文件中删除链接:
link_to "delete", document, :confirm => "Are you sure?", :method => :delete
这会生成以下HTML:
<a href="/documents/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>
这似乎很好.
当我点击这个" 销毁 "链接然后我看到浏览器确认(),当我点击取消时,我希望什么都不会发生.
但
删除功能并删除文档.
有没有人有同样的问题,或者我做错了什么?
目前我已经挖掘了这个:
我查看了jquery-ujs rails.js,并且有两个.live()事件附加到同一个锚点:
1)$('a [数据确认],输入[data-confirm]').live('click',function(){...}
2)$('a [数据方法]:不是([data-remote])').live('click',function(e){...}
第一个live()执行返回false; 据我所知,应该制动所有执行链,但事实并非如此.第二个live()仍然执行,第二个live()是生成表单并提交给destroy动作的地方.
我的应用程序是导航基地.我有UITableViewController.当我点击一个单元格时,我需要在所选单元格的左侧显示复选标记以选择单元格的指示.例如2个细胞.选择第一个单元格我需要指示单元格被选中用于复选标记.如果我选择第二个单元格我需要禁用第一个单元格复选标记,我需要在第二个单元格中显示复选标记.检查单元格选择.
我知道某些赞扬需要对hashmap/dictionary进行排序,但是MongoDB中的实际BSON文档是否重要且索引是否仍然有效?
例如
db.people.ensureIndex({LName:1, FName:1});
Run Code Online (Sandbox Code Playgroud)
它会同时适用于:
{LName:"abc", FName:"def"},
{FName:"ghi", LName:"jkl"}
Run Code Online (Sandbox Code Playgroud)
?
谢谢
我对C/C++中的fork()函数感到困惑.给出以下代码:
void fork2()
{
printf("LO\n");
fork()
printf("L1\n");
fork();
printf("Bye!\n");
}
Run Code Online (Sandbox Code Playgroud)
讲座幻灯片给出了下图
______Bye
___L1|______Bye
| ______Bye
L0|___L1|______Bye
Run Code Online (Sandbox Code Playgroud)
对我来说,这个图没有任何意义.我希望每次调用fork都会导致调用printf("LO\n").还是我错了?
我们有许多大大小小的项目 - 大多数(如果不是全部)项目至少使用一个SQL Server数据库.所有这些都设置了不同的环境.通常:dev(1 +),QA,UAT,Live.我们通常会相互独立地向不同的环境发布各种代码更新.当然,其中一些更新带有架构更新脚本,例如
alter table foo add column bar
go
update foo set bar=... where ...
Run Code Online (Sandbox Code Playgroud)
有时是手工制作,有时使用Red Gate SQL/Data Compare.
无论如何,我要去的地方通常是同一个项目的不同环境最终会有不同的列顺序.这是一个问题吗?我真的不知道......列顺序是否有任何性能影响?我可能遗失的任何东西?
什么是一个很好的算法来排序大于可用内存(许多10千兆字节)并包含可变长度记录的文本文件?我见过的所有算法都假设1)数据适合内存,或者2)记录是固定长度的.但想象一下我想按"BirthDate"字段(第4个字段)排序的大型CSV文件:
Id,UserId,Name,BirthDate
1,psmith,"Peter Smith","1984/01/01"
2,dmehta,"Divya Mehta","1985/11/23"
3,scohen,"Saul Cohen","1984/08/19"
...
99999999,swright,"Shaun Wright","1986/04/12"
100000000,amarkov,"Anya Markov","1984/10/31"
Run Code Online (Sandbox Code Playgroud)
我知道:
谢谢!♥