我有一个列表对象,我用它填充使用Petapoco.
类属性和名称正在加工数据库模式.主类是Issue,它与另外两个类相关,名称和属性也与数据库模式匹配:Condition和SeverityLevel.
public class Issue
{
public int Id { get; set; } // Primary key
/* Some properties... */
public DateTime? CreatedOn { get; set; }
public string CreatedBy { get; set; }
public DateTime? ModifiedOn { get; set; }
public string ModifiedBy { get; set; }
/* ... */
// Related source and target conditions
[PetaPoco.Ignore]
public Condition SourceCondition { get; set; }
[PetaPoco.Ignore]
public Condition TargetCondition { get; set; }
// …Run Code Online (Sandbox Code Playgroud) 我正在使用C#编写一个计算模块,我碰到了这个:
double v = 4 / 100;
Run Code Online (Sandbox Code Playgroud)
我知道这是一个错误的初始化,v = 0.0而不是返回v = 0.04
c#规则说我必须确保至少有一个成员是双重的,如下所示:
double v = (double) 4 / 100;
double v = 4.0 / 100;
Run Code Online (Sandbox Code Playgroud)
但是,我有很多涉及整数变量操作的初始化,我觉得懒得逐行浏览我的代码来检测这样的错误.
相反,是否有可能被编译器警告这个?
c# math arithmetic-expressions compiler-warnings implicit-conversion
我被要求改进和维护一个重要的用户社区使用和批准的内部Web应用程序.这包括性能改进和添加功能.
不幸的是,代码臃肿,有时写得很差,难以阅读和更改.这使得更改变得更加难以实现.
尽管如此,该应用程序仍然看起来很好看,很有用,而且用户也喜欢它,并希望进行更改.
这就是为什么我觉得自己被愚弄了.编写糟糕的代码以获得更快的结果和荣耀真的更好吗,然后留下伟大的新项目留下如此多的问题?
我已经阅读了很多关于Coding Horror这个主题的内容,但是我想从这里看到更多正在经历这个悲惨现实的人,以及他们如何应对它.我可能也需要给予一些勇气;)
由于我的主要语言不是英语,请随意用更好的语法重写这个问题.
我在WPF窗口上使用KeyUp和KeyDown事件.
我在这个窗口的CompositionTarget_Rendering事件中也有很多调用,它创建UIElements并为它们设置动画.这是由下面的引擎类完成的:
int _Fps;
Stopwatch sw = new Stopwatch();
void CompositionTarget_Rendering_Stats(object sender, EventArgs e)
{
_Fps++;
var ms = sw.ElapsedMilliseconds;
sw.Restart();
engine.Update(ms / 1000f);
timeFrames.Add(ms);
}
Run Code Online (Sandbox Code Playgroud)
我注意到我拥有的元素越多,get KeyUp和KeyDown事件越慢.
当我在主窗口中有大约1000个UI元素时,在我按下或释放一个键后,control_KeyDown和control_KeyUp的代码将在大约半秒后执行.
如果窗口内的动画也是滞后的话,这不会让我感到惊讶,但实际情况并非如此.
CompositionTarget_Rendering事件中的计算持续时间不超过20毫秒.似乎只有键盘事件轮询遭遇了沉重的条件.
我的问题是:
编辑:
我写了一个受安迪评论启发的样本.您可以将其粘贴到新WPF应用程序的主窗口中.它会在键向下或向上时更改窗口的颜色,并在CompositionTarget_Rendering事件中填充尽可能多的文本框.
public partial class MainWindow : Window
{
WrapPanel root2;
public MainWindow()
{
InitializeComponent();
root2 = new WrapPanel();
root2.Margin = new Thickness(10);
this.Content = root2;
}
private void Window_Loaded(object sender, RoutedEventArgs …Run Code Online (Sandbox Code Playgroud) 关于立即启动计时器的一个很好的答案,我可以看到以下代码:
timer.Elapsed += timer_Elapsed;
ThreadPool.QueueUserWorkItem((_) => DoWork());
...
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
DoWork();
}
void DoWork() {
// etc...
}
Run Code Online (Sandbox Code Playgroud)
我自己尝试了,我碰到了这一行,我认为匿名委托构造中有一个错字:
What?
|
V
ThreadPool.QueueUserWorkItem((_) => DoWork());
Run Code Online (Sandbox Code Playgroud)
哪个隐藏规则使得下划线"_"可以作为匿名委托中的参数名称接受?
我正在研究MassTransit和ASP.NET Core,依赖注入,并成功实现了一些可行的方法。我计划使用Kestrel Web服务器。
因此,我必须在.NET中以这种方式配置ASP.NET核心项目Startup.cs。
public void ConfigureServices(IServiceCollection services) {
...
var bus = Bus.Factory.CreateUsingRabbitMq(sbc => {
var host = sbc.Host(new Uri(address), h => {
h.Username("guest");
h.Password("guest");
});
});
services.AddSingleton<IBus>(bus);
services.AddScoped<IRequestClient<GetTagRequest, GetTagAnswer>>(x =>
new MessageRequestClient<GetTagRequest, GetTagAnswer>(x.GetRequiredService<IBus>(), new Uri(address + "/gettagrequest"), timeOut));
bus.Start(); // <= ok. how is the bus supposed to stop ?
...
Run Code Online (Sandbox Code Playgroud)
尽管此方法运行良好,但没有教程提到任何有关bus.Stop()在ASP.NET核心项目中进行设置的内容。我在MassTransit文档中读到,运行中的总线可能会阻止正常退出。
bus.Stop()放在ASP.NET Core项目的哪个位置?我正在使用VS2008 SP1 - 不知道在我应用SP1之前是否会发生这种情况,因为我从未在昨天之前尝试过.我尝试使用VS2008 SP1调试一个相当简单的XSLT文件,并从VS2008 SP1中获得此崩溃:
遇到意外错误.建议您尽快重启应用程序.
错误:未指定错误
文件:vsee\pkgs\vssprovider\sccprj.cpp
System.Windows.Shapes.Shape命名空间提供对可在XAML或代码中使用的Polygon对象的访问.
是否有一个Microsoft库在Polygon类似区域或centriod上提供一些非常基本的计算?
我的偏好是不要自己重新实现这些功能或复制数学/几何库.
我正在编写一个简单的Word Interop应用程序,它在后台打开.doc文件,更改书签内容,然后让用户看到它:
var App = new Microsoft.Office.Interop.Word.Application();
var ParTemplate = (object)Template;
var ParVisible = (object)false;
var Doc = App.Documents.Open(
FileName: ref ParTemplate, // Template
ConfirmConversions: ref missing,
ReadOnly: ref missing,
...
Doc.Activate();
Doc.SetBookmarkValue("IssueNumber", TheIssue.IssueNo);
Doc.SetBookmarkValue("Title", TheIssue.Title);
...
App.Visible = true;
App.WindowState = WdWindowState.wdWindowStateNormal;
Run Code Online (Sandbox Code Playgroud)
实际上,Word应用程序出现在任务栏中,用户必须手动切换到它.
使我的应用程序专注于打开的Word文档的最佳方法是什么?
我有很多代码片段必须在初始化期间运行一次.
我必须以这种方式使用布尔标志,因为它在一个事件中
bool _fuse;
void PerformLayout()
{
Size size;
if (!_fuse)
{
size = _InitialContainerSize;
_fuse = true;
}
else
size = parent.Size;
// ...
}
Run Code Online (Sandbox Code Playgroud)
因为它经常发生,我做了一些事情来使这个布尔变量看起来像一个保险丝:
所以我这样做了:
bool _fuse;
void PerformLayout()
{
Size size;
if (!Burnt(ref _fuse))
size = _InitialContainerSize;
else
size = parent.Size;
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果它初始化为false,则查询结果返回false一次,将切换为true,并且后续调用返回true.
public static bool Burnt(ref bool value)
{
if (!value)
{
value = true;
return false;
}
else
return true;
}
Run Code Online (Sandbox Code Playgroud)
当然,它有效,但我只是中等满意,我相信有更优雅的解决方案.你的是什么?