问题:大约300名候选人使用Flex进行测试.测试包括大约100个练习.每次练习后,都会调用.NET服务来存储结果.如果候选人完成测试,他/她的测试的所有数据都被Asp.NET非规范化.这种非规范化可能需要一些cpu,可能需要5到10秒.现在,大多数时候,一些候选人比其他人更早完成了测试,但仍有大约200人等到他们的时间到了.在那一刻,200名候选人完成了他们的考试,200名会议同时被非正规化.此时,服务器负载(cpu)太高并导致调用Web服务器出错.现在,我不想同时对所有这些会话进行规范化,而是希望使用MSMQ将它们添加到队列中.
题:
在我的项目中,静态检查被禁用,但是当我使用cmd运行msbuild.exe时,它会开始对每个项目进行静态检查...有没有办法,带参数来禁用它?
在我的Windows中,我有一个TextBox,我喜欢从另一个线程更新(文本属性).这样做时,我得到InvalidOperationException(参见标题).我在谷歌发现了不同的链接解释这一点,但我似乎仍然无法使它工作.
我试过的是这个:
Window1代码:
private static Window1 _myWindow;
private MessageQueueTemplate _messageQueueTemplate;
private const string LocalTemplateName = "LocalExamSessionAccessCodeMessageQueueTemplate";
private const string RemoteTemplateName = "RemoteExamSessionAccessCodeMessageQueueTemplate";
...
public Window1()
{
InitializeComponent();
_myWindow = this;
}
public static Window1 MyWindow
{
get
{
return _myWindow;
}
}
public void LogText(string text)
{
informationTextBox.Text += text + Environment.NewLine;
}
...
Run Code Online (Sandbox Code Playgroud)
在另一个类(实际上是一个spring.NET Listener适配器,监听某个队列,在另一个线程中启动).
var thread = new Thread(
new ThreadStart(
delegate()
{
Window1.MyWindow.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
Window1.MyWindow.LogText(text);
}
));
}
));
Run Code Online (Sandbox Code Playgroud)
它不会引发错误,但在窗口1的LogText法文本没有被触发,因此文本没有更新.
所以基本上,我想从另一个线程中运行的另一个类更新这个TextBox组件.
new_hash = {:simon => "Talek", :lorem => "Ipsum"}
Run Code Online (Sandbox Code Playgroud)
可以替换为
new_hash = {simon: "Talek", lorem: "Ipsum"}
Run Code Online (Sandbox Code Playgroud)
还有更短的写法吗
:on => :collection
Run Code Online (Sandbox Code Playgroud)
应用相同的逻辑会引发错误:
on: :collection
Run Code Online (Sandbox Code Playgroud)
更新以提供更多信息:
在我的 routes.rb 中:
get 'detail', { on: :member }
Run Code Online (Sandbox Code Playgroud)
不起作用。也没有
get 'detail', on: :member
Run Code Online (Sandbox Code Playgroud)
错误:
Exiting
SyntaxError: C:/Workspace/OE_11/CyberTrack_Rails3/config/routes.rb:23:
syntax error, unexpected ':'
get 'detail', { on: :member }
Run Code Online (Sandbox Code Playgroud)
或者
Exiting
SyntaxError: C:/Workspace/OE_11/CyberTrack_Rails3/config/routes.rb:23:
syntax error, unexpected ':'
get 'detail', on: :member
Run Code Online (Sandbox Code Playgroud) 我想检查是否已加载rails会话.如果我跟踪会话,我得到这个:
Session: #<Rack::Session::Abstract::SessionHash:0x8e3e not yet loaded>
Run Code Online (Sandbox Code Playgroud) 经过与Infragistics的长时间讨论后,看来带有SHIFT的ShortCuts在我的文化"nl-BE"中显示为MAJ.首先,文化"nl-BE"和AZERTY有点奇怪.如果想了解更多,请阅读http://en.wikipedia.org/wiki/AZERTY.重要的是:
其他键是相同的,即使传统上特殊键的名称用英语打印在它们上面.这是因为比利时主要是双语(法语 - 荷兰语)和官方三种语言(第三语言,德语,在东方语言中使用).
所以MAJ印刷为SHIFT.例如,在Office中,带有SHIFT的快捷方式显示为SHIFT.在Infragistics控件中,它们显示为MAJ.这让我们的客户感到沮丧.
因此,在与Infragistics讨论后,他们声称这是一个Windows Api调用,它返回MAJ而不是SHIFT.我从他们那里得到了一个展示行为的示例项目.所以现在我的问题是为什么Windows Api调用不会返回SHIFT,如果它是正常的,那么Office如何才能正确显示它?
获取密钥文本的代码是:
NativeWindowMethods.GetKeyNameText((int)scanCode, sb, 256);
Run Code Online (Sandbox Code Playgroud)
和
class NativeWindowMethods
{
#region MapVirtualKey
[DllImport("user32.dll")]
internal static extern int MapVirtualKey(uint uCode, uint uMapType);
#endregion //MapVirtualKey
#region GetKeyNameText
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern int GetKeyNameText(
int lParam,
[MarshalAs(UnmanagedType.LPWStr), Out]System.Text.StringBuilder str,
int size);
#endregion //GetKeyNameText
}
Run Code Online (Sandbox Code Playgroud)
如果是Shiftkey,则扫描码为2752512(2a),并返回MAJ.
那么,我的问题是什么?
为了完整性,我将粘贴Utilities类的完整代码.从Form下一次调用完成:
systemLocalizedString = Utilities.GetLocalizedShortcutString(shortcut);
使用快捷键= ShiftF12.调用后,systemLocalizedString等于"MAJ + F12".
更新:在Hans Passant的帮助下,我下载了Microsoft Keyboard Layout Creator并导出了我当前的键盘布局.在.klc文件中没有找到MAJ,只有Shift(例如2a Shift).那么为什么user32.dll会返回MAJ?甚至更奇怪的是,当我复制.klc文件并将其安装为新键盘时,突然user32.dll确实为新安装的键盘返回Shift(虽然它是一个精确的副本).
Utilities.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using …Run Code Online (Sandbox Code Playgroud) 我在Unix机器上有一些文件,我可以使用\ host \目录从Windows资源管理器访问Windows资源管理器
但是,当使用ant copy任务时,ant继续说该目录不存在...
所以,蚂蚁部分是:
<if>
<available file="${unix-dbs-dir}" type="dir" />
<then>
<echo message="${unix-dbs-dir} exists"/>
</then>
<else>
<echo message="${unix-dbs-dir} doesn't exist"/>
</else>
</if>
<copy todir="${dbsDir}" verbose="true">
<fileset dir="${unix-dbs-dir}">
<include name="*.bd"/>
</fileset>
</copy>
Run Code Online (Sandbox Code Playgroud)
这个输出是:
15:28:42 [echo] \\hyperion\dbs doesn't exist
15:28:42
15:28:42 BUILD FAILED
15:28:42 ... \\hyperion\dbs does not exist.
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用远程Windows网络路径,它确实有效......
知道如何解决这个问题吗?似乎很奇怪,我可以使用我的Windows资源管理器访问\ hyperion\dbs,但蚂蚁显然不能......
Unix是CentOs 6.5,但我想这没关系.
一些额外的信息.我创建了一个小的build.xml脚本,用于将文件从Unix机器复制到Windows机器.如果我从命令行执行build.xml ant脚本(顺便不以管理员身份启动),则输出为:
C:\Users\lievenc\TestCopyHyperion>%ANT_HOME%/bin/ant.bat -lib lib
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre1.8.
0_45\lib\tools.jar
Buildfile: C:\Users\lievenc\TestCopyHyperion\build.xml
[echo] Load them from directory \\srv-linuxdev\pde\appl\samplenet\dbs
[echo] \\srv-linuxdev\pde\appl\samplenet\dbs …Run Code Online (Sandbox Code Playgroud) 我已经在企业应用程序架构的模式中读到,工作单元应该只在单个会话中使用.所以每个会议应该有唯一的工作单位.任何人都可以告诉我为什么我不能在整个应用程序中使用一个工作单元(在我的案例中是ASP.NET).
是否还有其他示例项目,如Northwind Starters工具包,它们在ASP.NET开发体系结构中显示了"最佳实践"(层,单元测试,模拟数据,o/r映射工具......)?
或链接到良好和清晰的资源或文档?(MSDN是一个很好的参考,但没有好的教程)
thx,Lieven Cardoen
asp.net ×2
msmq ×2
ant ×1
ant-contrib ×1
c# ×1
culture ×1
infragistics ×1
jenkins ×1
jruby ×1
localization ×1
msbuild ×1
poeaa ×1
ruby ×1
syntax-error ×1
unit-of-work ×1
unix ×1
user32 ×1
wpf ×1