我有一个进程可以获取一系列"xml"文件.我把xml放在引号中的原因是文件中的文本没有一个根元素,它使得xml无效.在我的处理中,我想纠正这个并打开每个文件,在每个文件的开头和结尾添加一个根节点,然后将其关闭.这是我的想法,但这涉及打开文件,读取整个文件,在节点上标记,然后写出整个文件.这些文件的大小可能超过20 MB.
foreach (FileInfo file in files)
{
//open the file
StreamReader sr = new StreamReader(file.FullName);
// add the opening and closing tags
string text = "<root>" + sr.ReadToEnd() + "<root>";
sr.Close();
// now open the same file for writing
StreamWriter sw = new StreamWriter(file.FullName, false);
sw.Write(text);
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?
确定应用程序使用的窗口句柄数的最佳方法是什么?我可以使用工具或WMI性能计数器吗?
我想运行一个应用程序并观察某种类型的计数器,并看到窗口句柄的数量正在增加.
for (int i=0; i < 1000; i++)
{
System.Threading.Thread.Sleep(1000);
RichTextBox rt = new RichTextBox();
rt.Text = "hi";
this.Controls.Add(rt);
}
Run Code Online (Sandbox Code Playgroud)
我正在运行上面的代码并在进程中观察"Handle Count"计数器,并且它似乎没有增加.我有什么不正确的看法吗?
我正在用C#编写API,我想提供公开可用方法的同步和异步版本.例如,如果我有以下功能:
public int MyFunction(int x, int y)
{
// do something here
System.Threading.Thread.Sleep(2000);
return x * y;
}
Run Code Online (Sandbox Code Playgroud)
如何创建上述方法的异步版本(可能是BeginMyFunction和EndMyFunction)?是否有不同的方法来实现相同的结果,各种方法的好处是什么?
我正在测试一些同步结构,我注意到一些困扰我的东西.当我在同时写入一个集合时枚举它时,它抛出了异常(这是预期的),但是当我使用for循环遍历集合时,它没有.有人可以解释一下吗?我认为List不允许读者和作者同时操作.我希望循环遍历集合以展示与使用枚举器相同的行为.
更新:这是一个纯粹的学术练习.我强调,如果列表同时写入列表是很糟糕的.我也明白我需要一个同步结构.我的问题是关于为什么一个操作会像预期的那样抛出一个异常,而另一个却没有.
代码如下:
class Program
{
private static List<string> _collection = new List<string>();
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(AddItems), null);
System.Threading.Thread.Sleep(5000);
ThreadPool.QueueUserWorkItem(new WaitCallback(DisplayItems), null);
Console.ReadLine();
}
public static void AddItems(object state_)
{
for (int i = 1; i <= 50; i++)
{
_collection.Add(i.ToString());
Console.WriteLine("Adding " + i);
System.Threading.Thread.Sleep(150);
}
}
public static void DisplayItems(object state_)
{
// This will not throw an exception
//for (int i = 0; i < _collection.Count; i++)
//{
// Console.WriteLine("Reading " + _collection[i]);
// …
Run Code Online (Sandbox Code Playgroud) 我正在寻找开源或免费的数据协作软件.具体来说,这是一个非营利性组织,希望教远程学生如何使用外语.这个想法是教师会教课,一次最多可以有10名学生.教师可以发布幻灯片或其他教材,学生可以远程在他们的计算机上看到它.视频不是必需的,但音频是必须的.有什么建议?
此外,如果这些产品之间有任何评论或功能比较,我会有兴趣听到它们.
我在C#中编写一个控制台应用程序,我希望在预定义的时间内缓存某些项目(假设1小时).我希望已添加到此缓存中的项目在过期后自动删除.我可以使用内置数据结构吗?请记住,这是一个控制台应用程序而非Web应用程序
我有一个在UNIX上运行的Perl脚本,它使用DBI连接到SQL Server数据库并从中检索数据.该脚本如下所示:
$dbh = DBI->connect("dbi:Sybase:server=$connect;charset=UTF-8", $login, $password) or die("Couldn't connect to $connect as $login/$password:
$DBI::errstr");
$sql = "use mydb";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
$sth->finish;
$sql = "MyProc \@DATE='1/1/2008'";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
while (($body) = $sth->fetchrow()) {
print "$body\n";
}
$sth->finish;
$dbh->disconnect if $dbh;
Run Code Online (Sandbox Code Playgroud)
body变量从NVARCHAR列中检索数据并包含非ASCII字符.查询运行正常,但print语句吐出????? 当遇到非ASCII字符时.在DBI-> connect中我甚至指定了字符集,但没有运气.
有关如何让它工作的任何想法?
c# ×4
.net ×2
asynchronous ×1
caching ×1
dbi ×1
enumerators ×1
file-io ×1
list ×1
perl ×1
product ×1
sql-server ×1
winapi ×1
windows ×1
xml ×1