我想将增量整数传递给将在.NET C ++中的其他任务中运行的函数。
Public: void loop()
{
int i=0;max=100;
while(i<max){
Task ^newtask= gcnew Task (gcnew Action(&mainform::dosomething),cancellationtoken);
i++;
}
}
Public: Void dosomething(int j)
{
}
这里我想将整数i
传递给函数dosomething
,它将成为新任务的方法。
请帮我解决将参数传递给c++中的任务的问题。
答案 0 :(得分:0)
您可以使用带有Task
参数的Action<Object>
constructor版本,以便将所需的输入参数(包括取消令牌)传递给任务执行的方法
示例:
ref class Test
{
public:
void Loop()
{
auto tokenSource = gcnew CancellationTokenSource();
auto token = tokenSource->Token;
int i = 0, max = 100;
while (i < max)
{
auto tuple = gcnew tuple_t(i, token);
auto newtask = gcnew Task(gcnew Action<Object^>(this, &Test::DoSomething), tuple, token);
newtask->Start();
i++;
}
}
void DoSomething(Object^ state)
{
auto tuple = static_cast<tuple_t^>(state);
int data = tuple->Item1;
CancellationToken token = tuple->Item2;
// ...
}
private:
typedef Tuple<int, CancellationToken> tuple_t;
};
答案 1 :(得分:0)
谢谢Sebacote。你帮我解决了这个问题。我可以将整数作为参数传递给任务。