C# 在C中创建事件就像在java中一样
我有一个java类,它基本上用异步方式执行搜索,我通过侦听器返回结果,我需要用C编写相同的例程,我知道java之间有一些差异,因此无法编写,我是C初学者,我至少需要一个地平线C# 在C中创建事件就像在java中一样,c#,java,events,C#,Java,Events,我有一个java类,它基本上用异步方式执行搜索,我通过侦听器返回结果,我需要用C编写相同的例程,我知道java之间有一些差异,因此无法编写,我是C初学者,我至少需要一个地平线 public class Operation { private List<Operation.Listener> ListEventResult = new ArrayList<Operation.Listener>(); public void Search(Stri
public class Operation {
private List<Operation.Listener> ListEventResult = new ArrayList<Operation.Listener>();
public void Search(String word){
try {
Thread.sleep(3000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
if(ListEventResult.size()>0){
for(Operation.Listener li : ListEventResult){
li.Result("Result for "+word);
}
}
}
public void addEventResult(Listener li){
ListEventResult.add(li);
}
public interface Listener{
public void Result(String result);
}
}
public class Program {
public static void main(String[] args) {
// TODO Auto-generated method stub
Operation op = new Operation();
op.addEventResult(new Operation.Listener() {
@Override
public void Result(String result) {
System.out.println(result);
}
});
op.Search("Facebook");
}
}
活动和代表
C中的事件由委托实现。发布类定义了一个委托。subscribing类做两件事:首先,它创建一个与委托签名匹配的方法,然后它创建一个封装该方法的委托类型的实例。引发事件时,通过委托调用订阅类的方法。
处理事件的方法称为事件处理程序。您可以像声明任何其他委托一样声明事件处理程序
基于文本的
您不需要像java中那样的事件列表,因为自己的C将事件作为一个集合来处理,因此可以使用+运算符添加它们
一个简单的C代码示例
class Operation
{
public delegate void ResultHandler(object Operation, String result);
public event ResultHandler Result;
public void Search(String word) {
Thread.Sleep(3000);
if (Result != null)
Result(this, "Result for " + word);
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Operation op = new Operation();
op.Result += op_Result;
op.Search("Facebook");
}
void op_Result(object Operation, string result)
{
MessageBox.Show(result);
}
}
活动和代表
C中的事件由委托实现。发布类定义了一个委托。subscribing类做两件事:首先,它创建一个与委托签名匹配的方法,然后它创建一个封装该方法的委托类型的实例。引发事件时,通过委托调用订阅类的方法。
处理事件的方法称为事件处理程序。您可以像声明任何其他委托一样声明事件处理程序
基于文本的
您不需要像java中那样的事件列表,因为自己的C将事件作为一个集合来处理,因此可以使用+运算符添加它们
一个简单的C代码示例
class Operation
{
public delegate void ResultHandler(object Operation, String result);
public event ResultHandler Result;
public void Search(String word) {
Thread.Sleep(3000);
if (Result != null)
Result(this, "Result for " + word);
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Operation op = new Operation();
op.Result += op_Result;
op.Search("Facebook");
}
void op_Result(object Operation, string result)
{
MessageBox.Show(result);
}
}
我没有看到异步部分。有很多重复项-搜索查询。TL;博士;-C不支持通过匿名类实现内联接口,但在大多数情况下,简单委托是解决方案。异步部分是Operation.Search方法,但这里它是伪代码。我看不到异步部分。有很多重复项-Search query。TL;博士;-C不支持通过匿名类实现内联接口,但在大多数情况下,简单委托是解决方案。异步部分是Operation.Search方法,但这里它是伪代码,可能与