Cześć,
Moglibyście sprawdzić czy dobrze rozwiązałem te zdanka i ewentualnie poprawić błędy?
Zad1.
A) Utworzyć typ asynchronicznego delegata DCalculate dla zlecanej operacji o 2 argumentach typu int i zwracającego wartość typu int. B) Utworzyć obiekt delegata dCal typu DCalculate i przekazać mu metodę zlecaną do wykonania. C) Utworzyć obiekt delegata zwrotnego potwierdzenia i przekazać mu metodę MyResult. D) Wywołać asynchronicznie metodą BeginInvoke. E) W metodzie MyResult odebrać wynik asynchronicznego wywołania wywołując metodę EndInvoke.
a) public delegate int DCalculate(int a, int b);
b) private DCalculate dCal = new Dcalculate(mojeObliczenia);
c) AsyncCallback cb = new AsyncCallback(MyResult);
d) AsyncResult res = dCal.BeginInvoke(2, 3, cb, null);
e) public void MyResult(IASyncResult res)
{
int wynik = dCal.EndInvoke(res);
}
zad2.
Zdefiniować przykładowy interfejs ISortable o dwóch metodach: QSort i BSort oraz delegacie dla tych metod. Zdefiniować klasę konkretną HSort będącą klasą pochodną od klasy Sort i implementującą ISortable. W klasie HSort zdefiniować implementację interfejsu ISortable. Konkretne definicje metod można opuścić. W procedurze Main klasy głównej Test utworzyć obiekt klasy HSort, zainicjalizować delegata odpowiednią metodą. Przypisać obiekt bezpiecznie (tzn. po sprawdzeniu zgodności typów w procesie konwersji) do identyfikatora referencyjnego typu interfejsu ISortable, wywołać delegata metody, a na koniec – zwolnić obiekt typu HSort.
public interface ISorttable(public void QSort(), public void BSort())
Class HSort : Sort, ISortable
{
public void QSort() {}
public void BSort {}
}
Class Test
{
public void Main()
{
HSort sorts = new HSort();
ISortable Isort;
aortDelegate sD = new sortDelegate(sorts.Qsort);
if(sorts is ISortable)
{
Isort = (ISortable) sorts;
sorts();
sortDelegate sD = new sortDelegate (Sort.Qsort);
Console.WriteLine("Delegat {1}", sD()}
sorts.Dispose();
}
}
Szczególnie tego drugiego zadania nie jestem pewien.