完全复制
Using OpenNETCF.Net.Ftp inside a class instead of inside a Windows Form
到目前为止,我在Windows窗体中使用FTP对象。FTP对象在单独的线程中运行,因此为了确保我的应用程序不会冻结,我使用以下代码:
private void OnResponse(string response)
{
if (this.InvokeRequired)
{
this.Invoke(new StringDelegate(OnResponse), new object[] { response });
return;
}
} //end of OnResponse
我不完全清楚什么是字符串委托,但这是可行的。
但是,我现在正在重构并希望将ftp隐藏到类中。我的问题是如何确保主线程不会冻结?所有关于在类中引发事件的在线引用都是有意义的,但是我还没有找到一个应用程序是多线程的例子。我最担心的是被要求。
在上面的代码中,“This”是一个表单。如果我将ftp对象隐藏在类中,例如:
abstract class MyClass
{
//data members
private FTP _ftp;
//other data members, methods, and properties etc
}
“This”成为MyClass的一个对象。我不确定是否在类上实现了InvokeRequired属性(也许我应该让它实现一个具有该属性的特殊接口?)。或者也许我遗漏了一些东西,我不应该在类中使用多线程对象?
我正在使用c#和asp.net 2.0与VS 2008。