我经常看到它提到Thread.Sleep();不应该使用,但我不明白为什么会这样.如果Thread.Sleep();可能造成麻烦,是否有任何替代解决方案具有相同的安全性?
例如.
while(true)
{
doSomework();
i++;
Thread.Sleep(5000);
}
Run Code Online (Sandbox Code Playgroud)
另一个是:
while (true)
{
string[] images = Directory.GetFiles(@"C:\Dir", "*.png");
foreach (string image in images)
{
this.Invoke(() => this.Enabled = true);
pictureBox1.Image = new Bitmap(image);
Thread.Sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个案例,获取表名应该来自一个设置变量,如:
SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1);
SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1);
select * from @Cat where ID = @ID_1
Run Code Online (Sandbox Code Playgroud)
但是这样做MySQL输出错误,所以有人可以告诉我如何实现这一点,因为这些是我在MySQL中的宝贝步骤.
有没有办法在C#中列出类的所有变量(字段).如果是,可能有人给我一些例子如何将它们保存在一个List并获得它们可能使用Anonymous Types(var).
我不得不将int"123456"的每个值拆分为Int [],我已经有了解决方案,但我不知道有没有更好的方法:我的解决方案是:
public static int[] intToArray(int num){
String holder = num.ToString();
int[] numbers = new int[Holder.ToString().Length];
for(int i=0;i<numbers.length;i++){
numbers[i] = Convert.toInt32(holder.CharAt(i));
}
return numbers;
}
Run Code Online (Sandbox Code Playgroud) 我需要从C#应用程序关闭另一个进程(Windows Media Encoder),到目前为止我可以使用:
Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();
Run Code Online (Sandbox Code Playgroud)
但是如果Media Encoder Application是Streaming或Recording,它会在退出时显示一个Dialog:
"你确定要停止编码吗?"
那么有没有办法回答或点击代码中的是按钮?
[编辑]许多用户正在回答Process.kill(),但这不是一个选项,因为Process.Kill();将立即终止Windows Media Encoder,而Windows Media Encoder将不会完成正在写入的文件,这迫使我重新索引视频文件.所以我不能使用Process.Kill();
有没有办法获得大文本文件中的行数,但没有读取文件内容或读取文件结束和计数++.
也许有一些文件属性,但根本找不到它.因为我可能在某些情况下我应该获得总行数并将其与当前行进行比较以显示百分比,并且仅针对百分比显示首先阅读所有内容而不是读取它再次显示原始文本可能是愚蠢的在用户.
最好成绩
我正在构建一个.net C#控制台程序,以将文件部署到Windows文件共享服务器(正在共享的文件夹).路径是::\\192.168.0.76\htdocs\public
在运行时我收到错误:
[09:35:29]: [Step 1/3] Unhandled Exception: System.UnauthorizedAccessException: Access to the path '\\192.168.0.76\htdocs\public' is denied.
[09:35:29]: [Step 1/3] at DeployFileShare.Program.CopyDir(String source, String dest, String[] exclude, Boolean overwrite)
[09:35:29]: [Step 1/3] at DeployFileShare.Program.Deploy(String num, String source)
[09:35:29]: [Step 1/3] at DeployFileShare.Program.Main(String[] args)
[09:35:29]: [Step 1/3] Process exited with code -532459699
Run Code Online (Sandbox Code Playgroud)
我想我需要对自己进行身份验证.我遇到过这个:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, password);
WindowsImpersonationContext context = idnt.Impersonate();
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
AppDomain.CreateDomain("192.168.0.76").SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity("user", "pass");
WindowsImpersonationContext context = idnt.Impersonate();
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用它.当我运行应用程序时,我得到:
C:\Users\Administrator>DeployFileShare 1 R:\BuildOutput\_PublishedWebsites\Web 2 …Run Code Online (Sandbox Code Playgroud) 我有一个IF/ELSE声明,虽然我想知道如果它是真的,如何告诉"其他"部分什么都不做.例如:
if(x == x)
//run calc.exe
else
//DoNothing
Run Code Online (Sandbox Code Playgroud)
或者我写信说,如果我只删除else语句,如果if条件不匹配,它会继续吗?
我有一个XML文件,我有一个节点,我读了所有ChildNodes.childNode的名称与我必须使用此childNode的值设置的变量匹配.
在循环中,我想设置:
C#代码:
protected string myvar1;
protected string myvar2;
Run Code Online (Sandbox Code Playgroud)
XML内容如下所示:
<parameters>
<myvar1>MyValue1</myvar1>
<myvar2>MyValue2</myvar2>
</parameters>
Run Code Online (Sandbox Code Playgroud)
C#设置变量:
foreach (var item in xmlParamInstallation.SelectNodes("parameters")[0].ChildNodes)
{
??????
}
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
谢谢,
更新1: 循环中的值"field"始终为null.
public class ParametersTest
{
public string myvar1 { get; set; }
public string myvar2 {get; set;}
}
var type = typeof(ParametersTest);
foreach (XmlNode item in xmlParamInstallation.SelectNodes("parameters")[0].ChildNodes)
{
var field = type.GetField(item.LocalName);
field.SetValue(field, item.InnerText);
}
Run Code Online (Sandbox Code Playgroud) 我有一个Windows.Forms.Panel用于显示图片列表的应用程序.当面板的高度超过32767像素时,其余内容将被简单地切掉.
例:
Windows.Forms.Panel myPanel;
ArrayList pictureList;
foreach(pic in pictureList) {
myPanel.Controls.Add(pic) // adds all the objects without complaints
}
Run Code Online (Sandbox Code Playgroud)
在示例中,所有元素都添加到面板而不会引发错误,但在面板达到32767后,不再显示任何图像.
我的问题:是否有可能打破此限制并在面板中显示更多内容?
我知道这种方法无论如何都不方便,但现在没有时间重新设计整个应用程序.