gpt4 book ai didi

c# - 显示hadoop内容C#

转载 作者:行者123 更新时间:2023-12-02 22:07:32 24 4
gpt4 key购买 nike

我想使用.net获取我的hdfs群集中可用的文件列表。
问题是,当我在Program.cs的main方法中运行代码时,它起作用了。当我尝试在按钮中使用代码时,应用程序挂起,它阻塞了。
这是代码

using Microsoft.Hadoop.MapReduce; 
try {
IHadoop mycluster = Hadoop.Connect();
string[] content = mycluster.StorageSystem.LsFiles("/");
foreach (string s in content) {
Console.WriteLine(s);
}
} catch (Exception exException) {
MessageBox.Show (exException.Message);
}

提前谢谢了

最佳答案

如果在WinForms事件处理程序中同步执行代码,则此时将不执行任何UI操作,因为您将阻塞处理Windows消息泵的UI线程。因此,每当您进行冗长的操作并且希望UI是响应式的时,都必须在单独的任务/线程中运行它们。

在单独的任务中运行操作会带来额外的挑战,您必须将所有UI操作编码回UI线程,因为如果在UI线程以外的线程中运行它们,则会遇到错误。

我假设您有一个常规的Click处理程序,参数sendere(并且您使用的是.NET 4.5-否则必须使用Task.Factory来运行任务):

Task.Run(() => {
try {
IHadoop mycluster = Hadoop.Connect();
string[] content = mycluster.StorageSystem.LsFiles("/");
foreach (string s in content) {
Console.WriteLine(s);
}
} catch (Exception exException) {
MethodInvoker invoker = delegate() { MessageBox.Show (exException.Message); };
((Control)sender).Invoke(invoker);
}
});

关于c# - 显示hadoop内容C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40672258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com