Получите результат асинхронного вызова, инициируемого методом System.Delegate BeginInvoke.NET
получает результат асинхронного вызова, инициируемого result
= EndInvoke(asyncResult
)BeginInvoke
метод.
[
для методов с res0,...,resN
] = EndInvoke(res0,...,resN
,asyncResult
)out
и/или ref
параметры.
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
Параметр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 = 12
asyncResult
объектSystem.IAsyncResult
Объект, возвращенный BeginInvoke
В виде.NET System.IAsyncResult object.
res0,...,resN
— РезультатыРезультаты 0 через N (если таковые имеются) асинхронного звонка, отвеченного делегатом в виде любого допустимого типа. Для методов с out
и/или ref
параметры. Количество аргументов является суммой:
Количество возвращаемых значений (0
или 1
).
Количество out
и ref
аргументы.
result
результатРезультат асинхронного звонка, отвеченного как любой допустимый тип.
res0,...,resN
— РезультатыРезультаты 0 через N (если таковые имеются) возвращенный делегатом, возвращенным как любой допустимый тип. Для методов с out
и/или ref
параметры.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.