Получение результата асинхронного вызова, инициированного методом .NET System.Delegate BeginInvoke
извлекает результат асинхронного вызова, инициированного result
= EndInvoke(asyncResult
)BeginInvoke
способ.
[
для методов с res0,...,resN
] = EndInvoke(res0,...,resN
,asyncResult
)out
и/или ref
параметры.
The del2int
делегат возвращает результат двух входных параметров. Делегат не имеет out
или ref
параметры.
Создайте этот код делегирования C # в сборку с именем SignatureExamples
и загрузите его в MATLAB®. Для получения дополнительной информации см. раздел Создание приложения .NET для MATLAB Examples.
public delegate Int32 del2int(Int32 arg1, Int32 arg2);
Создайте эту функцию MATLAB, чтобы добавить два целых чисел.
% Add input arguments function res = addfnc(A, B) % A and B are numbers res = A + B; end
Создайте делегата и отобразите BeginInvoke
подпись.
myDel = SignatureExamples.del2int(@addfnc); methodsview(myDel)
System.IAsyncResult RetVal BeginInvoke ( SignatureExamples.del2int this, int32 scalar arg1, int32 scalar arg2, System.AsyncCallback callback, System.Object object)
Проверьте EndInvoke
подпись.
int32 scalar RetVal EndInvoke ( SignatureExamples.del2int this, System.IAsyncResult result)
Функции addfnc
.
asyncRes = myDel.BeginInvoke(6,8,[],[]); while asyncRes.IsCompleted ~= true pause(0.05) % Use pause() to let MATLAB process event end result = myDel.EndInvoke(asyncRes)
result = 14
ref
ПараметрThe delrefvoid
делегат использует ref
параметр (refArg
). MATLAB сопоставляет ref
аргумент в качестве аргументов RHS и LHS.
Создайте этот код делегирования C # в сборку с именем SignatureExamples
и загрузите его в MATLAB.
public delegate void delrefvoid(ref Double refArg);
Создайте эту функцию MATLAB, чтобы увеличить входной параметр и вернуть результат.
% Increment input argument function res = incfnc(A) % A = number res = A + 1; end
Создайте делегата и отобразите BeginInvoke
подпись.
myDel = SignatureExamples.delrefvoid(@incfnc); methodsview(myDel)
[System.IAsyncResult RetVal, double scalar refArg] BeginInvoke ( SignatureExamples.delrefvoid this, double scalar refArg, System.AsyncCallback callback, System.Object object)
Проверьте EndInvoke
подпись.
double scalar refArg EndInvoke ( SignatureExamples.delrefvoid this, double scalar refArg, System.IAsyncResult result)
Функции incfnc
.
x = 6; asyncRes = myDel.BeginInvoke(x,[],[]); while asyncRes.IsCompleted ~= true pause(0.05) % Use pause() to let MATLAB process event end myRef = 0; result = myDel.EndInvoke(myRef,asyncRes); disp(['Increment of ' num2str(x) ' = ' num2str(result)]);
Increment of 6 = 7
out
ПараметрThe deloutsingle
делегат использует out
параметр (argOut
) и одно возвращаемое значение. MATLAB сопоставляет out
аргумент как дополнительное возвращаемое значение.
Создайте этот код делегирования C # в сборку с именем SignatureExamples
и загрузите его в MATLAB.
public delegate Single deloutsingle(Single argIn, out Single argOut);
Создайте эту функцию MATLAB, чтобы удвоить входной параметр.
% Double input argument function [res1,res2] = times2fnc(A) res1 = A*2; res2 = res1; end
Создайте делегата и отобразите BeginInvoke
подпись.
myDel = SignatureExamples.deloutsingle(@times2fnc); methodsview(myDel)
[System.IAsyncResult RetVal, single scalar argOut] BeginInvoke ( SignatureExamples.deloutsingle this, single scalar argIn, System.AsyncCallback callback, System.Object object)
Проверьте EndInvoke
подпись.
[single scalar RetVal, single scalar argOut] EndInvoke ( SignatureExamples.deloutsingle this, System.IAsyncResult result)
Функции times2fnc
.
asyncRes = myDel.BeginInvoke(6,[],[]); while asyncRes.IsCompleted ~= true pause(0.05) % Use pause() to let MATLAB process event end [a1,a2] = myDel.EndInvoke(asyncRes); a1
a1 = 12
asyncResult
- ОбъектSystem.IAsyncResult
Объект, возвращенный BeginInvoke
, заданный как объект .NET System.IAsyncResult.
res0,...,resN
- РезультатыРезультаты от 0 до N (если таковые имеются) асинхронного вызова, возвращенного делегатом, заданные как любой допустимый тип. Для методов с out
и/или ref
параметры. Количество аргументов является суммой:
Количество значений возврата (0
или 1
).
Количество out
и ref
аргументы.
result
- РезультатРезультат асинхронного вызова, возвращенный как любой допустимый тип.
res0,...,resN
- РезультатыРезультаты с 0 по N (если таковые имеются), возвращенные делегатом, возвращаются как допустимый тип. Для методов с out
и/или ref
параметры.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.