Microsoft.Web.Administration程序集位于C:\Windows\System32\inetsrv我的计算机上.我相信它是作为IIS的一部分安装的.该大会也在GAC中.
鉴于我想将项目提交给SVN以供其他人结账,我该如何从我的项目中引用这个程序集.Microsoft.Web.Administration没有出现在Visual Studio的"添加引用"列表中.我可以添加一个引用C:\Windows\System32\inetsrv\Microsoft.Web.Administration,但这似乎是一个坏主意,因为其他开发人员可能将它安装在不同的路径或驱动器上.
或者我可以将它复制到项目文件夹中,但是我必须将二进制文件提交到SVN.
我正在制作马节目.我有马脸,并希望应用一点面具.佩戴钻头面罩时,只能看到马眼.首先,我必须将马面转换为数字.为此,我有一组位,包括0,0,0和1马的脸.
我正在使用C#并将问题分解为部分:
在第4步,我希望只看到马眼,但我只看到"0",这不是一个马脸.
这是我的所有代码,请不要质疑我的ASCII艺术与问题无关,除了它是一个原型,真正的程序将具有卓越的图形.
//the head of the horse
string head = "# #" +
"########" +
"#O O#" +
"# #" +
"# #" +
"#= =#" +
" #====# " +
" #### ";
//digitize the horse into bits of binary
string binaryHead = head.Replace('#', '0').Replace('=', '0').Replace(' ', '0').Replace('O', '1');
long face = Convert.ToInt64(binaryHead, 2);
//make a bit mask with holes for the eyes
string mask = "11111111" +
"11111111" +
"10111101" +
"11111111" …Run Code Online (Sandbox Code Playgroud) 我需要存储节点的集合:
class Node
{
int Value;
//other info
}
Run Code Online (Sandbox Code Playgroud)
我有三个要求:
我认为为此使用的最佳集合是某种排序列表。这样,只需从排序列表中取出第一个元素,就可以有效地满足要求#1。通过在列表中的正确位置插入新节点,可以有效地满足要求#2。
但是SortedList.Net 中的集合就像SortedDictionary并要求排序的键是唯一的,这违反了要求#3。
.Net 中似乎没有满足这些要求的集合,主要是因为确实存在的自排序集合要求排序的键是唯一的。这是什么原因呢?我认为这不可能是疏忽。我在这里没有抓住什么?我可以找到类似的问题,但它们通常涉及有人提出建议SortList,然后意识到这不起作用,然后对话就在没有标准解决方案的情况下消失了。至少如果有人会说“C# 中没有用于此任务的集合,您需要将一些东西组合在一起”,这将是一个答案。
每当添加新节点时使用常规List<Node>并重新排序列表是否可以接受?似乎这不如一开始就将节点插入到正确的位置那么有效。也许这就是我应该做的?手动迭代列表,直到找到自己插入新节点的位置?
为了实现对接,我依靠监听Window.LocationChanged事件来检测在屏幕上拖动的窗口的变化位置.但是一位用户报告说他们的机器上没有对接工作.
原来他们在Windows性能选项中禁用了"拖动时显示窗口内容",因此只有在窗口移动到最终位置时才会触发LocationChanged事件,而不是在窗口处于飞行中途时.
我想知道是否有另一种检测窗口移动的方法,这是一种很好的方式.我知道我可以用pinvoke,或者连接一些可怕的计时器,但我希望有一个更好的方法,也许有一个可靠的事件要听?
这是一种方法来阻止任何"你没有发布任何代码"/"你有什么尝试"投诉.
protected override void OnLocationChanged(EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud) 我以为这是一个合理的模式,用于在事件处理程序中异步调用WebClient DownloadData:
private async void button1_Click(object sender, EventArgs e)
{
WebClient wc = new WebClient();
//wc.Proxy = null;
byte[] bytes = await wc.DownloadDataTaskAsync("http://www.google.com");
label1.Text = Encoding.ASCII.GetString(bytes);
}
Run Code Online (Sandbox Code Playgroud)
但是在返回之前我发现DownloadDataTaskAsync块大约5秒钟(除非取消注释wc.Proxy = null语句).如果一个方法可以随心所欲地执行非平凡的工作甚至在返回任务之前,那么这个方法有什么意义呢?
大概这意味着安全我不应该像上面那样调用xAsync方法,而应该始终将它们包装在Task.Run()中以确保.或不?
两个线程.数组中第一个疯狂阅读元素.第二个同样是通过读取元素并将它们递增任意量来更新元素.
这样安全吗?在这种情况下会出现什么问题吗?我不介意读取线程在更新线程仍在更新过程中读取"旧"值.我只是想确保读者不会读取未写入的数字,也不会发生异常.
我的应用程序定期连接到 MyDatabase 并执行查询。
我需要处理 MyDatabase 数据库尚不存在且需要创建的情况。我当前正在做的是每次第一次连接到主数据库并运行如下所示的操作:
SELECT * FROM sysdatabases WHERE NAME='MyDatabase'
判断MyDatabase是否存在。如果没有,我将创建它,然后继续连接到 MyDatabase 并执行查询。
打开与主数据库的单独连接并每次执行查询似乎没有必要(即使连接是池化的)。为什么我不能立即连接到 MyDatabase?99% 的情况下它会成功并且我可以执行查询。失败的 1% 的时候我可以检测到 MyDatabase 丢失并在那时创建它,对吗?
但当我尝试这个时,我遇到了问题。如果我尝试连接到 MyDatabase 但它不存在,我会收到 SqlException
无法打开登录请求的数据库 MyDatabase。登录失败。
美好的。伟大的。我可以捕获任何 SqlException,然后转到主数据库以确定 MyDatabase 不存在并创建它。
但创建它后,当我现在尝试连接到 MyDatabase 时,我立即收到相同的错误:
无法打开登录请求的数据库 MyDatabase。登录失败。
看起来它没有尝试再次连接,而是返回缓存的结果。如果我在创建数据库后等待 10 秒再尝试连接它,则连接会成功。
我的问题是,这种缓存是否是预期的(我猜是这样),更重要的是是否有处理这种情况的最佳实践?我可以使用 SqlConnection API 中是否有缓存清除或超时设置?我认为我可以实现自己的超时延迟,但我想知道我是否缺少更好的方法。
我正在尝试执行命令,但我需要删除空格.
这是我想要执行的命令,但它有两个空格:
DROP TABLE Table_1
Run Code Online (Sandbox Code Playgroud)
我想要做的是将其转换为没有空格的形式.我以为我可以使用连接和CHAR字符串函数来生成要执行的字符串:
'DROP'+CHAR(32)+'TABLE'+CHAR(32)+'Table_1'
Run Code Online (Sandbox Code Playgroud)
我试过这个并将它传递给EXEC,但这显然是无效的:
';EXEC('DROP'+CHAR(32)+'TABLE'+CHAR(32)+'Table_1');--
Run Code Online (Sandbox Code Playgroud)
然后我考虑在@declaring临时变量的许多行上构造字符串,但为此我似乎再次需要空格.
有办法做到这一点吗?