我有一个具有两个属性的类,我想将它绑定到CheckedListBox项.WebsiteName属性将是DisplayValue,IsChecked应该是项目的Checked状态:
public class ACLASS:
{
public string WebsiteName
{
get;
set;
}
public bool IsChecked
{
get;
set;
}
public ACLASS()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我'尝试'绑定它的方式:
ACLASS aclass = new ACLASS();
aclass.WebsiteName = "www.example.com";
BindingList<ACLASS> list = new BindingList<ACLASS>();
list.Add(aclass);
checkedlistbox.DataSource = list;
checkedlistbox.DisplayMember = "WebsiteName";
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但是如何将CheckedListBox中项目的Checked状态与类的IsChecked属性绑定,所以当我检查CheckedListBox中的项目时,它还会更改ACLASS实例的IsChecked属性?我需要这个,所以我可以通过ACLASS实例验证项目的检查状态.
我有代理测试功能.在它里面我有一个catch块,并且在指定的时间(TIMEOUT)之后如果代理不好我返回一个假标志.问题是,即使没有例外,每10次函数会挂起一次.实际上HttpWebResponse.Timeout不能正常工作(或者它可能会工作,但我不知道如何使用它).所以SO用户给了我这个解决方案:
public class TimeoutInvoker
{
public static void Run(Action action, int timeout)
{
var waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
AsyncCallback callback = ar => waitHandle.Set();
action.BeginInvoke(callback, null);
if (!waitHandle.WaitOne(timeout))
throw new TimeoutException("Timeout.");
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
TimeoutInvoker.Run(()=>ProxyIsGood(ip, port));
Run Code Online (Sandbox Code Playgroud)
问题是我需要像这样使用它,返回值:
while( !(TimeoutInvoker.Run(()=>ProxyIsGood(ip, port)) )
{
reset_stuff();
}
Run Code Online (Sandbox Code Playgroud)
那么如何修改TimeoutInvoker呢?