我正在向WinForms ListView添加几千个(例如53,709个)项.
尝试1:13,870 ms
foreach (Object o in list)
{
ListViewItem item = new ListViewItem();
RefreshListViewItem(item, o);
listView.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
这非常糟糕.明显的第一个解决方法是打电话BeginUpdate/EndUpdate.
尝试2:3,106 ms
listView.BeginUpdate();
foreach (Object o in list)
{
ListViewItem item = new ListViewItem();
RefreshListViewItem(item, o);
listView.Items.Add(item);
}
listView.EndUpdate();
Run Code Online (Sandbox Code Playgroud)
这样更好,但仍然是一个数量级太慢.让我们将ListViewItems的创建与添加ListViewItems分开,因此我们找到了真正的罪魁祸首:
尝试3:2,631 ms
var items = new List<ListViewItem>();
foreach (Object o in list)
{
ListViewItem item = new ListViewItem();
RefreshListViewItem(item, o);
items.Add(item);
}
stopwatch.Start();
listView.BeginUpdate();
foreach (ListViewItem item in items)
listView.Items.Add(item));
listView.EndUpdate();
stopwatch.Stop() …Run Code Online (Sandbox Code Playgroud) 我想针对域控制器验证一组凭据.例如:
Username: STACKOVERFLOW\joel
Password: splotchy
Run Code Online (Sandbox Code Playgroud)
很多人建议查询Active Directory.如果抛出异常,那么您知道凭据无效 - 正如此stackoverflow问题中所建议的那样.
您不仅要对域帐户进行身份验证,还要进行隐式授权检查.也就是说,您正在使用模拟令牌从AD中读取属性.如果其他有效帐户无权从AD读取,该怎么办?默认情况下,所有用户都具有读取权限,但可以将域策略设置为禁用受限帐户(和/或组)的访问权限.
绑定AD会产生严重的开销,必须在客户端加载AD架构缓存(DirectoryServices使用的ADSI提供程序中的ADSI缓存).这既是网络又是AD服务器,消耗资源 - 而且对于像验证用户帐户这样的简单操作来说太昂贵了.
您依赖于非例外情况的异常失败,并假设这意味着无效的用户名和密码.然后,其他问题(例如,网络故障,AD连接故障,内存分配错误等)被错误地表示为身份验证失败.
其他人建议使用LogonUser()API函数.这听起来不错,但不幸的是,调用用户有时需要一个权限,通常只给操作系统本身:
调用LogonUser的进程需要SE_TCB_NAME权限.如果调用进程没有此权限,LogonUser将失败,GetLastError将返回ERROR_PRIVILEGE_NOT_HELD.
在某些情况下,调用LogonUser的进程还必须启用SE_CHANGE_NOTIFY_NAME权限; 否则,LogonUser失败,GetLastError返回ERROR_ACCESS_DENIED.作为管理员组成员的本地系统帐户或帐户不需要此权限.默认情况下,为所有用户启用SE_CHANGE_NOTIFY_NAME,但某些管理员可能会为所有用户禁用它.
省高院" 法案作为操作系统的一部分 "特权是不是你想要做无可奈何的东西-作为微软在一份指出知识库文章:
...调用LogonUser的进程必须具有SE_TCB_NAME权限(在用户管理器中,这是" 作为操作系统的一部分 "权限).SE_TCB_NAME权限非常强大, 不应授予任何任意用户,以便他们可以运行需要验证凭据的应用程序.
此外,LogonUser()如果指定了空密码,则调用将失败.
验证一组域凭据的正确方法是什么?
我碰巧是从托管代码调用,但这是一个普通的Windows问题.可以假设客户已安装.NET Framework 2.0.
我已经创建了一个.NET .DLL文件,我想在GAC中注册.
我在Windows Server 2003命令提示符中使用了此命令:
C:\"Path of dll"\>gacutil /i dllname.dll
'gacutil' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
它说路径不正确.
我是否需要在.NET cmd提示符中使用它?如果是这样,我无法找到.NET cmd提示符.
我试图破解P1 ... P10参数的含义,clr20r3当我的应用程序遇到异常时,该参数与写入事件日志的参数相关联.
我能找到的最好的是:
w3wp.exe)6.0.3790.1830)42435be1)mrtables.webservice)2.1.2.0)4682617f)129)50)system.argumentexception)NIL)用于clr20r3的Google搜索提供了数千个样本参数值,有人可以尝试从中派生模式.
但我希望有关于参数含义的文档,而不是有根据的猜测.
编辑:虽然我可以希望规范文档,但我真的很高兴看到异常被抛出,在什么行,完成堆栈跟踪.
我试图在文本框中输入文本,因为用户输入了文本(jsfiddle playground):
function edValueKeyPress() {
var edValue = document.getElementById("edValue");
var s = edValue.value;
var lblValue = document.getElementById("lblValue");
lblValue.innerText = "The text box contains: " + s;
//var s = $("#edValue").val();
//$("#lblValue").text(s);
}Run Code Online (Sandbox Code Playgroud)
<input id="edValue" type="text" onKeyPress="edValueKeyPress()"><br>
<span id="lblValue">The text box contains: </span>Run Code Online (Sandbox Code Playgroud)
代码运行没有错误,但该值的中input text框,期间onKeyPress总是值之前的变化:

问题:如何获取文本框的文本
onKeyPress?
在HTML DOM中有三个与"用户正在输入"相关的事件:
onKeyDownonKeyPressonKeyUp在Windows中,WM_Key当用户按住某个键时,消息的顺序变得很重要,并且该键开始重复:
WM_KEYDOWN('a')- 用户按下了A键WM_CHAR('a')- a已收到用户的字符 …我有一个包含Xml列的表:
SELECT *
FROM Sqm
Run Code Online (Sandbox Code Playgroud)

xml一行数据的样本将是:
<Sqm version="1.2">
<Metrics>
<Metric id="TransactionCleanupThread.RecordUsedTransactionShift" type="timer" unit="µs" count="1" sum="21490" average="21490" minValue="73701" maxValue="73701" >73701</Metric>
<Metric id="TransactionCleanupThread.RefundOldTrans" type="timer" unit="µs" count="1" sum="184487" average="184487" minValue="632704" maxValue="632704" >632704</Metric>
<Metric id="Database.CreateConnection_SaveContextUserGUID" type="timer" unit="µs" count="2" sum="7562" average="3781" minValue="12928" maxValue="13006" standardDeviation="16" >12967</Metric>
<Metric id="Global.CurrentUser" type="timer" unit="µs" count="6" sum="4022464" average="670411" minValue="15" maxValue="13794345" standardDeviation="1642047">2299194</Metric>
<Metric id="Global.CurrentUser_FetchIdentityFromDatabase" type="timer" unit="µs" count="1" sum="4010057" average="4010057" minValue="13752614" maxValue="13752614" >13752614</Metric>
</Metrics>
</Sqm>
Run Code Online (Sandbox Code Playgroud)
对于这些数据,我希望:
SqmId id type unit count sum minValue maxValue standardDeviation Value
===== =================================================== ===== ==== …Run Code Online (Sandbox Code Playgroud) 我试图在Javascript text中根据需要标记输入框.
<input id="edName" type="text" id="name">
Run Code Online (Sandbox Code Playgroud)
如果该字段最初标记为required:
<form>
<input id="edName" type="text" id="name" required><br>
<input type="submit" value="Search">
</form>
Run Code Online (Sandbox Code Playgroud)
当用户尝试提交时,他们会收到验证错误:

但现在我想通过Javascript required在"运行时"设置属性:
<form>
<input id="edName" type="text" id="name"><br>
<input type="submit" value="Search">
</form>
Run Code Online (Sandbox Code Playgroud)
与相应的脚本:
//recommended W3C HTML5 syntax for boolean attributes
document.getElementById("edName").attributes["required"] = "";
Run Code Online (Sandbox Code Playgroud)
除非我现在提交,否则没有验证检查,没有阻止.
设置HTML5验证布尔属性的正确方法是什么?
HTML5验证required属性记录为Boolean:
4.10.7.3.4
required属性该
required属性是布尔属性.指定时,元素是必需的.
关于如何定义boolean属性有很多令人费解的事.HTML5规范说明:
元素上存在布尔属性表示真值,缺少属性表示false值.
如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导或尾随空格.
这意味着您可以通过两种不同的方式指定required 布尔属性:
edName.attributes.required …Run Code Online (Sandbox Code Playgroud) 我想为类名创建一个别名.以下语法将是完美的:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
Run Code Online (Sandbox Code Playgroud)
但它不会编译.
注意此示例仅供参考.不要试图通过建议改变整个系统的设计来解决这个特殊问题.此示例的存在或缺乏不会改变原始问题.
一些现有代码依赖于静态类的存在:
public static class ColorScheme
{
...
}
Run Code Online (Sandbox Code Playgroud)
此配色方案是Outlook 2003配色方案.我想介绍一个Outlook 2007配色方案,同时保留Outlook 2003配色方案:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Run Code Online (Sandbox Code Playgroud)
但我仍然面临这样一个事实,即代码依赖于名为ColorScheme的静态类的存在.我的第一个想法是创建一个ColorScheme类,我将从Outlook2003或Outlook2007下载:
public static class ColorScheme : Outlook2007ColorScheme
{
}
Run Code Online (Sandbox Code Playgroud)
但你不能从静态类下降.
我的下一个想法是创建静态ColorScheme类,但使Outlook2003ColorScheme和Outlook2007ColorScheme类非静态.然后静态ColorScheme类中的静态变量可以指向"true"颜色方案:
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
} …Run Code Online (Sandbox Code Playgroud) 是SQL Server中的声明ACID吗?
给定一个未包装在BEGIN TRANSACTION/ COMMIT TRANSACTION中的T-SQL语句是该语句的操作:
我在实时系统中有一个声明似乎违反了查询规则.
实际上我的T-SQL语句是:
--If there are any slots available,
--then find the earliest unbooked transaction and mark it booked
UPDATE Transactions
SET Booked = 1
WHERE TransactionID = (
SELECT TOP 1 TransactionID
FROM Slots
INNER JOIN Transactions t2
ON Slots.SlotDate = t2.TransactionDate
WHERE t2.Booked = 0 --only book it if it's currently unbooked
AND Slots.Available > 0 --only book …Run Code Online (Sandbox Code Playgroud) C#有一个没有 Conditional(!Conditional,NotConditional,Conditional(!))属性?
我知道C#有一个Conditional属性:
[Conditional("ShowDebugString")]
public static void ShowDebugString(string s)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这相当于1:
public static void ShowDebugString(string s)
{
#if ShowDebugString
...
#endif
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我想要反向行为(你必须明确选择退出):
public static void ShowDebugString(string s)
{
#if !RemoveSDS
...
#endif
}
Run Code Online (Sandbox Code Playgroud)
这让我尝试:
[!Conditional("RemoveSDS")]
public static void ShowDebugString(string s)
{
...
}
Run Code Online (Sandbox Code Playgroud)
哪个不编译.和:
[Conditional("!RemoveSDS")]
public static void ShowDebugString(string s)
{
...
}
Run Code Online (Sandbox Code Playgroud)
哪个不编译.和:
[NotConditional("RemoveSDS")]
public static void ShowDebugString(string s) …Run Code Online (Sandbox Code Playgroud) c# ×5
javascript ×2
sql-server ×2
.net ×1
class-design ×1
clr ×1
conditional ×1
exception ×1
gac ×1
html ×1
html5 ×1
input ×1
listview ×1
onkeypress ×1
performance ×1
security ×1
sqlxml ×1
validation ×1
windows ×1
winforms ×1
xml ×1