好,
我想创建一个位于文件菜单中的Windows shell扩展,就像"Tortorise SVN"菜单一样.
有谁知道我的开始,一篇好文章,或实现什么接口?
谢谢!
自2008年圣诞节以来,我一直在研究同一个项目.我被要求从控制台应用程序(只打印跟踪语句)中将它从完整的Windows应用程序中取出.当然,那没关系.唯一的问题是应用程序的某些部分可能需要几分钟到几乎一个小时才能运行.我需要多线程来显示用户状态或错误.但我不知道从哪里开始.
我已经在WPF中构建了一个小UI.这是非常基本的,但我想根据需要扩展它.该应用程序通过选择源,选择目标,然后单击开始来工作.我希望随着流程的进行更新列表框.与SQL Server安装的方式大致相同,每个步骤在完成时都会根据其名称生成绿色复选标记.
新手如何开始多线程?我应该查看哪些图书馆?任何建议将不胜感激.
ps我正在阅读这个库,http://www.codeplex.com/smartthreadpool
@Martin:这是我的应用程序的构建方式:
我使用从LINQ到ADO.NET的所有内容来获取数据,转换它,然后输出它.
我的主要要求是我想更新我的UI以指示进度
@Frank:如果后台工作程序中的某些内容抛出异常(已处理或以其他方式)会发生什么?我的申请如何收到通知?
@Eric Lippert:是的,我现在在调查.在我复杂化之前.
如果您需要更多信息,请告诉我.目前我已经从单元测试运行这个应用程序,所以我想callig它是一个控制台应用程序是不正确的.我使用Resharper来做到这一点.我是现在唯一使用该应用程序的人,但我想要一个更具吸引力的界面
我从生产中恢复了我的开发数据库,我的生成数据库中不存在我在开发环境中需要的存储过程.是否可以使用命令将developmetn存储过程导入SQL Server.大约有88个文件,因为每个过程都在不同的文本文件中.
TIA!克里斯
让我首先说我已经阅读了这些问题:1和2,我明白我可以编写代码来查找我的列表中的重复项,但我的问题是我想更新原始列表而不仅仅是查询和打印重复项.
我知道我不能更新查询返回的集合,因为它不是一个视图,它是一个匿名类型IEnumerable<T>.
我希望能够在列表中找到重复项,并标记我创建的属性,该属性State稍后在应用程序中使用.
有没有人遇到这个问题,你能指出我正确的方向吗?
ps我正在使用ATM的方法是一个冒泡排序类型循环,逐项遍历列表并比较关键字段.显然这不是最快的方法.
编辑:
为了将列表中的项目视为"重复",有三个必须匹配的字段.我们将它们称为Field1,Field2和Field3
我在基类上有一个重载的Equals()方法,用于比较这些字段.
我在跳过对象的唯一时间MarkDuplicates()的方法是如果对象状态是UNKNOWN或ERROR,否则,我测试了.
如果您需要更多详细信息,请告诉我们.
再次感谢!
这可能是一个重复的问题,但实际上不知道如何标题.
有没有人能够在Excel Interop Library中找到一个方法,从"查找和替换"对话框中公开"查找全部"功能?
有Find,FindNext和FindPrevious,但没有FindAll,这很奇怪.
到目前为止,这是我这样做的方式,我第一次尝试它,可以这么说......
//FindRange() is an extension method which wraps Worksheet.Cells.Find()
Range start = sheet.FindRange(searchText,
XlLookAt.xlPart,
XlSearchOrder.xlByColumns,
XlSearchDirection.xlNext);
HashSet<int> matches = new HashSet<int>();
Range next = start;
while (true)
{
next = sheet.Cells.FindNext(next.get_Offset(1, 0));
if (!matches.Add(next.Row))
break;
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我有一个带有实验室数据的Excel电子表格,如下所示:
µg/L (ppb)
Run Code Online (Sandbox Code Playgroud)
我想测试希腊字母"μ"的存在,如果发现我需要做一些特别的事情.
通常,我会写这样的东西:
if ( cell.StartsWith(matchSequence) ) {
//.. <-- universal symbol for "magic" :)
}
Run Code Online (Sandbox Code Playgroud)
我知道框架中有一个Encoding API,但是我应该只将它用于这个边缘情况还是仅仅从字符映射中复制希腊微符号?
我如何测试这个unicode角色的存在?角色地图看起来像一个"便宜"的修复,以后会咬我(我为一家跨国公司工作).
我想做一些可维护的东西,而不只是一些疯狂的数学 - 巫毒转换,只适用于这种边缘情况.
我想我在这里要求最佳实践建议.
谢谢!
我问这个问题在一天前关于希腊Unicode字符,现在我有一个建立在一个问题.
提取完所有数据后,我试图准备将其导入Excel.我不得不选择制表符分隔文件,因为我的一些数据包含逗号(幸运的是我!).
在将数据导入Excel后,我遇到的问题是一个非常奇怪的问题.
Notepad ++中的列数据如下所示:
Total Suspended Solids @105°C
Run Code Online (Sandbox Code Playgroud)
Excel单元格数据如下所示:
Total Suspended Solids @105°C
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样.这是否与度数符号的表示有关?
ps我这个问题中的符号是直接复制和粘贴
我希望我不要因为问这么基本的东西而受到抨击.我可以通过Google获得答案,但我希望听到一些不是来自教科书的内容.
我正在编写一个单元测试来验证我的IDictionary密钥是顺序的.
由于Keys属性是一个ICollection<T>,我想枚举集合并将Key值打印到控制台.
尝试使用简单for循环打印Key值时:
for (int i = 0; i < unPivotedData.Count; i++)
{
Console.WriteLine(unPivotedData.Keys[i]);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下编译错误:
Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.ICollection<int>'
Run Code Online (Sandbox Code Playgroud)
但是,当我使用foreach循环时:
foreach(int key in unPivotedData.Keys)
{
Console.WriteLine(key);
}
Run Code Online (Sandbox Code Playgroud)
一切都很好.
我理解索引器的作用以及它是如何实现的,但它是如何foreach工作的?我不明白是怎么foreach能工作,并能在for编译错误的结果.
我在这里错过了Enumeration的基础吗?
干杯!
编辑:此外,两者之间是否存在性能差异?我知道我不能使用forIDictionary,但如果我使用IList,我可以.for移动速度是否快于foreach或者性能增益可以忽略不计
这可能是一个加载的问题,它可能会被拒绝,但它完全让我感到沮丧.
在开发中使用SQL Server时,数据访问速度快,效率高,但是当您使用COM与Excel通信时,速度很慢.
无论您使用何种数据访问技术,ADO,ADO.NET,LINQ,实体框架,Astoria(ADO.NET数据服务),它们都比自动化Excel更快.
如果您只需要工作簿中单元格"A1"中的数据,则需要Excel.Application,Excel.Workbook,Excel.Worksheet和Excel.Range对象,以获取一个数据点.
WTF,为什么与SQL Server交谈比与Excel交谈更有效?Excel是本地的,Sql Server可能不是.
TIA克里斯
我有一个注册表单,显示用户名称(文本框),电子邮件(文本框)和分区(选择列表).名称和电子邮件已预先填充(我正在使用Windows身份验证,Intranet应用程序),我想将DropDown中的SelectedValue作为Int32发送到我的控制器,我不想再发送整个SelectList.这个清单现在很小,但会增长到相当大的规模.
我是一个名为的类RegistrationViewModel,它包含这些字段的公共属性.但是,当我SelectList用于DivisionList时,我收到此错误:No parameterless constructor defined for this object..
如果我更改Type,它没有问题,但是Division是null或0.有没有办法将SelectedValue从DropDown传递给Controller Action作为Int32?
我不确定我在做什么,我一直在使用MVC大约48小时,看过PDF,TechEd和TechDays视频.
道歉,这是我的控制器代码:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(RegistrationViewModel rvm)
{
IApplicationContext context = ContextRegistry.GetContext();
IValidationErrors errors = new ValidationErrors();
IValidator validator = (IValidator)context.GetObject("RegistrationValidator");
bool valid = validator.Validate(rvm, errors);
if (valid)
repo.SaveRegistration();
else
ViewData["DivisionList"] = repo.GetDivisions();
return View(rvm);
}
Run Code Online (Sandbox Code Playgroud)
RegistrationViewModel 类
public class RegistrationViewModel
{
public string Name { get; set; }
public string Email { get; set; }
//public SelectList DivisionList { get; private set; …Run Code Online (Sandbox Code Playgroud) 一个月前,我正在向哥们展示如何使用.NET来查询MySQL.它工作得很好,但他不明白为什么我们需要MySQL的"驱动程序"和ODBC.他虽然ODBC就足够了.
当他问我为什么时,我尽了最大努力,但我的回答很短暂.
这个问题的正确解释是什么?
我有一个名为LabFileBase的基类.我构建了一个List并将我的派生类添加到它.我想根据我定义的键在List中搜索特定对象.我遇到的问题是你如何在LINQ表达式中转发?
以下是一些示例代码:
public abstract class LabFileBase
{
}
public class Sample1 : LabFileBase
{
public string ID {get;set;}
public string Name {get;set;}
//..
}
public class Sample2 : LabFileBase
{
public string ID {get;set;}
public string Name {get;set;}
//..
}
Run Code Online (Sandbox Code Playgroud)
我想搜索特定的Sample2类型,但如果我使用这样的常规foreach循环,我需要向下转换:
foreach(var s in processedFiles) //processedFiles is a List<LabFileBase>
if (s is Sample2)
var found = s as Sample2;
if (found.ID = ID && found.Name == "Thing I'm looking for")
//do extra work
Run Code Online (Sandbox Code Playgroud)
我宁愿有这样的事情:
var result = processedFiles.Select(s => s.ID …Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×3
linq ×2
sql-server ×2
unicode ×2
asp.net-mvc ×1
casting ×1
com ×1
enumeration ×1
excel ×1
generics ×1
import ×1
interop ×1
odbc ×1
selectlist ×1
sorting ×1
windows ×1