উত্তর:
এখানে সি # এর সাথে ইভেন্ট তৈরি এবং ব্যবহারের একটি উদাহরণ's
using System;
namespace Event_Example
{
//First we have to define a delegate that acts as a signature for the
//function that is ultimately called when the event is triggered.
//You will notice that the second parameter is of MyEventArgs type.
//This object will contain information about the triggered event.
public delegate void MyEventHandler(object source, MyEventArgs e);
//This is a class which describes the event to the class that recieves it.
//An EventArgs class must always derive from System.EventArgs.
public class MyEventArgs : EventArgs
{
private string EventInfo;
public MyEventArgs(string Text)
{
EventInfo = Text;
}
public string GetInfo()
{
return EventInfo;
}
}
//This next class is the one which contains an event and triggers it
//once an action is performed. For example, lets trigger this event
//once a variable is incremented over a particular value. Notice the
//event uses the MyEventHandler delegate to create a signature
//for the called function.
public class MyClass
{
public event MyEventHandler OnMaximum;
private int i;
private int Maximum = 10;
public int MyValue
{
get
{
return i;
}
set
{
if(value <= Maximum)
{
i = value;
}
else
{
//To make sure we only trigger the event if a handler is present
//we check the event to make sure it's not null.
if(OnMaximum != null)
{
OnMaximum(this, new MyEventArgs("You've entered " +
value.ToString() +
", but the maximum is " +
Maximum.ToString()));
}
}
}
}
}
class Program
{
//This is the actual method that will be assigned to the event handler
//within the above class. This is where we perform an action once the
//event has been triggered.
static void MaximumReached(object source, MyEventArgs e)
{
Console.WriteLine(e.GetInfo());
}
static void Main(string[] args)
{
//Now lets test the event contained in the above class.
MyClass MyObject = new MyClass();
MyObject.OnMaximum += new MyEventHandler(MaximumReached);
for(int x = 0; x <= 15; x++)
{
MyObject.MyValue = x;
}
Console.ReadLine();
}
}
}
event
।
আমার ইভেন্ট নিবন্ধে আমার ইভেন্ট এবং প্রতিনিধিদের সম্পর্কে সম্পূর্ণ আলোচনা আছে । সাধারণ ধরণের ইভেন্টের জন্য, আপনি কেবল একটি সর্বজনীন ইভেন্ট ঘোষণা করতে পারেন এবং সংকলক গ্রাহকদের খোঁজ রাখার জন্য একটি ইভেন্ট এবং একটি ক্ষেত্র উভয়ই তৈরি করবে:
public event EventHandler Foo;
আপনার যদি আরও জটিল সাবস্ক্রিপশন / সাবস্ক্রিপশন লজিকের প্রয়োজন হয় তবে আপনি তা স্পষ্টভাবে করতে পারেন:
public event EventHandler Foo
{
add
{
// Subscription logic here
}
remove
{
// Unsubscription logic here
}
}
আপনি নিম্নলিখিত কোড সহ একটি ইভেন্ট ঘোষণা করতে পারেন:
public event EventHandler MyOwnEvent;
প্রয়োজনে ইভেন্টহ্যান্ডলারের পরিবর্তে একটি কাস্টম প্রতিনিধি প্রকারটি ব্যবহার করা যেতে পারে।
ইভেন্টস টিউটোরিয়াল (এমএসডিএন) নিবন্ধে .NET এ ইভেন্টগুলির ব্যবহার সম্পর্কে আপনি বিশদ তথ্য / টিউটোরিয়াল পেতে পারেন ।
এটি করতে আমাদের তিনটি উপাদান জানতে হবে
firing the Event
responding to the Event
ঘটনা নিজেই
ক। ঘটনা
খ .EventArgs
গ। ইভেন্টআর্গস গণনা
এখন এমন ইভেন্ট তৈরি করতে দেয় যা কোনও ফাংশন ডাকা হলে ডাকা হয় fired
তবে আমি এই সমস্যাটি সমাধান করার জন্য আমার ক্রম: এটি তৈরি করার আগে আমি ক্লাসটি ব্যবহার করছি
জন্য দায়ী জায়গা responding to the Event
NetLog.OnMessageFired += delegate(object o, MessageEventArgs args)
{
// when the Event Happened I want to Update the UI
// this is WPF Window (WPF Project)
this.Dispatcher.Invoke(() =>
{
LabelFileName.Content = args.ItemUri;
LabelOperation.Content = args.Operation;
LabelStatus.Content = args.Status;
});
};
নেটলগ একটি স্থির শ্রেণি আমি এটি পরে ব্যাখ্যা করব
পরবর্তী পদক্ষেপ হয়
জন্য দায়ী জায়গা firing the Event
//this is the sender object, MessageEventArgs Is a class I want to create it and Operation and Status are Event enums
NetLog.FireMessage(this, new MessageEventArgs("File1.txt", Operation.Download, Status.Started));
downloadFile = service.DownloadFile(item.Uri);
NetLog.FireMessage(this, new MessageEventArgs("File1.txt", Operation.Download, Status.Finished));
তৃতীয় পদক্ষেপ
নেটলগ নামে একটি ক্লাসের মধ্যে আমি ইভেন্টটি রেড করেছি
public sealed class NetLog
{
public delegate void MessageEventHandler(object sender, MessageEventArgs args);
public static event MessageEventHandler OnMessageFired;
public static void FireMessage(Object obj,MessageEventArgs eventArgs)
{
if (OnMessageFired != null)
{
OnMessageFired(obj, eventArgs);
}
}
}
public class MessageEventArgs : EventArgs
{
public string ItemUri { get; private set; }
public Operation Operation { get; private set; }
public Status Status { get; private set; }
public MessageEventArgs(string itemUri, Operation operation, Status status)
{
ItemUri = itemUri;
Operation = operation;
Status = status;
}
}
public enum Operation
{
Upload,Download
}
public enum Status
{
Started,Finished
}
এই শ্রেণীর এখন ধারণ the Event
, EventArgs
এবং EventArgs Enums
এবং the function
ঘটনা অগ্নিসংযোগ জন্য দায়ী
এই দীর্ঘ উত্তরের জন্য দুঃখিত