我修改了我的Settings.settings文件以便system_Filters成为一个System.String[].
我想在Visual Studio设计器中填充此变量,而不是在代码中填充.我可以使用以下代码在代码中使用它:
Properties.Settings.Default.system_Filters = new string[] { "a", "b", "c" };
string _systemFilters = Properties.Settings.Default.system_Filters;
Run Code Online (Sandbox Code Playgroud)
这工作正常.但是,我没有一个好的地方把它放在我的代码中,理想情况下想在Settings.setting文件中输入它.此值不会被修改.我已经尝试了几乎所有我能想到的变体,但结果总是一样的.

有谁知道正确的语法?我也愿意使用StringCollectionif,这样更容易.
c# application-settings settings.settings visual-studio .net-4.5
上周我关闭了我的工作VS 2012(11.0)项目,今天我无法加载Windows窗体设计器.相反,我收到此消息:"为了防止在加载设计器之前可能的数据丢失,必须解决以下错误:路径中的非法字符." 没有选项可以忽略该消息.我仍然可以运行我的代码,它工作正常.请准备一个冗长的调用堆栈:
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.IO.Path.Combine(String path1, String path2)
at Microsoft.VisualStudio.Platform.VsAppDomainManager.d__1.MoveNext()
at Microsoft.VisualStudio.Platform.VsAppDomainManager.InnerResolveHandler(String name)
at Microsoft.VisualStudio.Platform.VsAppDomainManager.ResolveHandler(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean …Run Code Online (Sandbox Code Playgroud) 我有一个.NET 4.5 WinForm程序,它使用ODBC查询基于文本的数据库.然后我想在多行文本框中显示每个结果,我想以最快的方式完成.
在更新/填充文本框期间,GUI不必是可用的.但是,如果我能更新进度条让用户知道发生了什么事情,那就太好了.我相信后台工作者或新线程/任务是必要的,但我从来没有实现过.
我最初使用这个代码并且它很慢,因为它在继续下一个之前每行都绘制了结果.
OdbcDataReader dbReader = com.ExecuteReader();
while (dbReader.Read())
{
txtDatabaseResults.AppendText(dbReader[0].ToString());
}
Run Code Online (Sandbox Code Playgroud)
这明显更快.
string resultString = "";
while (dbReader.Read())
{
resultString += dbReader[0].ToString();
}
txtDatabaseResults.Text = resultString;
Run Code Online (Sandbox Code Playgroud)
但是在文本框生效之前有一段慷慨的等待时间,所以我想知道操作是否可以更快.现在我从文件中获取大约7,000行,我认为没有必要切换到AvalonEdit(如果我的思维方式错误,请纠正我,但我想保持简单并使用内置文本框).
当我尝试OpenFileDialog在WinForm中启动时,我最近在程序中遇到了与STA相关的错误.我已经做了一些阅读,在我将[STAThread]属性添加到主线程之前,我想知道它将如何影响我的程序执行.
我是COM的外国人,所以我读到的所有内容都不适合我.与我相关的一些观点是:
[STAThread]属性将应用程序定义为使用单线程单元模型.更具体地说,它将应用程序线程的状态更改为单线程. http://www.a2zdotnet.com/View.aspx?Id=93
当许多线程访问对象时,STA体系结构会施加显着的性能损失.每个线程对该对象的访问都是序列化的,因此每个线程必须排队等待轮到该对象.
http://www.codeproject.com/Articles/9190/Understanding-The-COM-Single-Threaded-Apartment-Pa
我了解线程安全的需要,但我还是不明白什么 STAThread一样.在我的程序(我从另一个开发人员继承)中,主线程启动了几个其他线程,其中一个初始化UI表单 - 我认为这是问题出现的地方.随着[STAThread]加入会发生什么新的线程?这是否会影响非Windows对象的多线程通信?
当我尝试OpenFileDialog在其中一个表单中打开时发生错误.我使用VS设计器将对话框添加到表单中:它不起作用.然后我尝试在全局文件中创建一个对话框,该文件由主线程运行并从我的表单中调用该实例.它没有效果.
当我在C#应用程序中发送查询时,我收到了来自串行设备的3字节消息.整个消息最多只能设置一个位,例如$04 00 00很好,但不是$04 01 00或$05 00 00.
位移和检查每个位是一个解决方案,但也许有更优雅的东西?我们可以检查每个字节以查看它是否是2的幂,但我无法想出一种看起来更好的方法(在这些情况下也不确定效率).
作为问题的扩展,我需要将每个可能的值与输出消息匹配,例如:
$01 00 00: Button A pressed
$00 02 00: Lever B pulled
$00 00 04: Switch C activated
案例陈述是一个简单的解决方案,但又一次,想知道是否有一种非常好的方式来做到这一点.
我需要阅读 - 阅读.NET 4.5应用程序中日志文件的第一行和最后一行,即.
日志文件在每一行都有时间戳,我想找到最年轻的(第一行)和最旧的(最后一行)时间戳.这不是一项艰巨的任务,但我想知道是否有一种聪明的方法.
目前实现看起来像这样(我实际上需要日志文件的第二行,因为第一行是空白,因此Skip()):
string firstLine = File.ReadLines(logFile).Skip(1);
string lastLine = File.ReadLines(logFile).Last();
Run Code Online (Sandbox Code Playgroud)
这个非常简单的代码可以有任何改进吗?