另一个随机问题打击了我(我在过去的5个小时内喝了9杯咖啡,很抱歉......) - 你会向用户展示什么样的进度条让你不知道需要多长时间,但你对"平均"时间有一个很好的了解.例如,一项通常需要大约30秒的任务,但您无法知道进度(除非它仍在进行或只是失败).什么是最好的用户体验?:
如果平均时间是10分钟而不是30秒,答案会有所不同吗?
谢谢,罗伯特
编辑:
为了清楚起见,问题是关于进度条,你不知道/指示需要多长时间(例如,在远程机器上执行任务).如果你确实有一些进展的迹象,那通常很好用.
我正在开发一款游戏,每次更新游戏循环时都会运行AI.在此更新期间,我有机会转动AI控制的实体和/或使其在其面向的方向上加速.我希望它到达最终位置(在合理范围内)并且在该位置具有特定的速度和方向(同样不需要精确)即,给定当前:
立即选择:
使这些最小化:
可以在游戏循环的每次迭代期间重新计算参数.一张图片说1000字,所以例如当前状态为蓝色花花公子,在尽可能短的时间内达到大约红色花花公子的状态(箭头是速度): …
我一直在阅读这个"德米特定律"的东西,它(和一般的纯粹的"包装"类)似乎通常都是反模式.考虑一个实现类:
class FluidSimulator {
void reset() { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)
现在考虑另一个类的两种不同实现:
class ScreenSpaceEffects1 {
private FluidSimulator _fluidDynamics;
public FluidSimulator getFluidSimulator() { return _fluidDynamics; }
}
class ScreenSpaceEffects2 {
private FluidSimulator _fluidDynamics;
public void resetFluidSimulation() { _fluidDynamics.reset(); }
}
Run Code Online (Sandbox Code Playgroud)
以及调用所述方法的方法:
callingMethod() {
effects1.getFluidSimulator().reset(); // Version 1
effects2.resetFluidSimulation(); // Version 2
}
Run Code Online (Sandbox Code Playgroud)
乍一看,版本2看起来有点简单,遵循"Demeter规则",隐藏Foo的实现等等.但这会将FluidSimulator中的任何更改与ScreenSpaceEffects联系起来.例如,如果添加一个参数来重置,那么我们有:
class FluidSimulator {
void reset(bool recreateRenderTargets) { /* ... */ }
}
class ScreenSpaceEffects1 {
private FluidSimulator _fluidDynamics;
public FluidSimulator getFluidSimulator() { return _fluidDynamics; }
}
class …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Visual Studio 2010中创建用于代码生成的自定义工具.首先我注册它:
"$(FrameworkSDKDir)Bin\NETFX 4.0 Tools\gacutil.exe" /if "$(TargetPath)"
Run Code Online (Sandbox Code Playgroud)
然后我通过reg键添加它:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\CLSID\{6A96476E-74F3-4AB3-9CCA-F15EC6104D84}]
"RuntimeVersion"="v4.0.30319"
"Class"="MapBuildTool.MapFileGenerator"
"Assembly"="MapBuildTool, Version=1.0.0.0, Culture=en-US, PublicKeyToken=7d8abca94a1e38ae"
"ThreadingModel"="Both"
"InprocServer32"="C:\\Windows\\SysWOW64\\mscoree.dll"
@="MapBuildTool"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}\MapBuildTool]
"CLSID"="{6A96476E-74F3-4AB3-9CCA-F15EC6104D84}"
"GeneratesDesignTimeSource"=dword:00000001
@="MapBuildTool"
Run Code Online (Sandbox Code Playgroud)
然后visual studio说:
Cannot find custom tool 'MapBuildTool' on this system.
Run Code Online (Sandbox Code Playgroud)
好的......现在怎么样?它找不到自定义工具注册表项吗?它是否找到了钥匙,但装卸组件有困难?它是否加载了程序集但是在实例化类时遇到了麻烦......?哪些日志/地方在那里我可以找出哪些错误?
code-generation visual-studio-2010 customtool visual-studio visual-studio-2010-sp1
使用Visual Studio将资源嵌入.NET程序集时,它以程序集名称为前缀.但是,程序集可以具有不是以程序集名称为前缀的嵌入资源.我能看到这样做的唯一方法是使用ILDASM反汇编程序集,然后重新组装它,添加新资源 - 这有效,但是......我真的需要完成那句话吗?
(Desktop .NET Framework 3.5,Visual Studio 2008 SP1,C#,Windows 7 Enterprise x64.)
.net resources visual-studio-2008-sp1 embedded-resource visual-studio
我有一个终结器似乎总是在应用程序关闭期间失败.我认为这是因为它持有一些在那时不再有效的本地资源.有没有办法在析构函数/终结器中告诉它是否因应用程序关闭而被调用?
谢谢!
我正在尝试在我的程序中测试一个相当线程敏感的区域,并且想知道是否有一种方法可以强制gcc在每次发出的指令后插入一个调用,以便我可以手动屈服于另一个线程?
谢谢,罗伯特
在我的命名约定中,我使用_name作为私有成员变量.我注意到如果我使用ReSharper自动生成构造函数,如果该成员是关键字,它将生成一个转义关键字.例如:
class IntrinsicFunctionCall
{
private Parameter[] _params;
public IntrinsicFunctionCall(Parameter[] @params)
{
_params = @params;
}
}
Run Code Online (Sandbox Code Playgroud)
这通常被认为是不好的做法还是可以的?它经常发生在@params和@interface上.
编辑:这实际上并没有为变量名添加前缀.如果从不同的.NET语言(即F#)访问该变量,它就是params.事实上,在C#中,如果你写@x它完全等同于x.
我经常使用Date.parse(String)来解析未知格式的日期.到目前为止,我的用例似乎工作正常,但我想知道为什么它被弃用了,我是否应该避免它?文档只是说:
As of JDK version 1.1, replaced by DateFormat.parse(String s)
Run Code Online (Sandbox Code Playgroud)
但是,DateFormat中没有静态解析方法,只是一个实例方法,它需要一个DateFormat对象,对于未知的日期格式,我不会这样做.
所以,我想知道......
如果一个函数只在一个地方使用,而某些分析表明它没有被内联,那么在强制编译器内联它时总会有性能优势吗?
显然是"轮廓和看"(在有问题的功能的情况下,它确实证明是一个小的性能提升).我大多数时候都是出于好奇而问 - 有一个相当聪明的编译器,这有什么性能上的缺点吗?
我想知道是否可以动态添加指向动态IP地址的子域,以及我将如何做到这一点?换句话说,"如何实现dyndns/no-ip":-)?(我没有得到的部分是添加/更改DNS条目......我理解客户端每隔几分钟发送一个数据包-___-).当然,我可以告诉我的所有用户只使用DynDNS/No-IP,但是将它与应用程序集成会更酷.
谢谢,罗伯特
这可能是这样的:
public static object[] untypedToObjectArray(Array arr)
{
int len = arr.Length;
object[] res = new object[len];
for(int i = 0; i < len; i++)
res[i] = arr.GetValue(i);
return res;
}
Run Code Online (Sandbox Code Playgroud)
有更好的(更高效的)方式吗?对于值类型,每个元素都需要明显加框,这可能很慢.
.net ×3
c# ×3
c ×2
algorithm ×1
arrays ×1
c++ ×1
customtool ×1
date ×1
deprecated ×1
destructor ×1
dns ×1
domain-name ×1
dyndns ×1
finalizer ×1
gcc ×1
ip-address ×1
java ×1
keyword ×1
math ×1
oop ×1
optimization ×1
performance ×1
progress-bar ×1
puzzle ×1
resources ×1
string ×1
subdomain ×1