Получение результата асинхронного вызова, инициированного методом .NET System.Delegate BeginInvoke
извлекает результат асинхронного вызова, инициированного result = EndInvoke(asyncResult)BeginInvoke способ.
[ для методов с res0,...,resN] = EndInvoke(res0,...,resN,asyncResult)out и/или ref параметры.
del2int delegate возвращает результат двух входных аргументов. Делегат не имеет out или ref параметры.
Построить этот код делегата C # в сборке с именемSignatureExamples и загрузите его в MATLAB ®. Дополнительные сведения см. в разделе Создание приложения .NET для примеров MATLAB.
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 =
14ref Параметр 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 Параметр 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 =
12asyncResult - Объект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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.