C#事件传参,该怎么处理

C#事件传参
 private void button1_Click_1(object sender, EventArgs e)
        {
            string str="123";
            Ping p = new Ping();
            p.PingCompleted += new PingCompletedEventHandler(test);
            //p.PingCompleted += test;
            p.SendAsync("192.168.1.101", 1);
        }
 
        private void test(object sender, PingCompletedEventArgs e)
        {
            if (e.Reply.Status == IPStatus.Success)
            {
                MessageBox.Show("成功");
            }
            else
            {
                MessageBox.Show("失败");
            }
 
        }

如何把str传递到test方法中?
这里ping以后要加到for循环中,所以使用全局变量会有问题。
------解决思路----------------------
不明白你想干啥

test是个事件回调函数,不是你的代码去控制它执行的,而是等系统调用它

为什么要把123传进这里面去??

什么ping以后加入循环,看不懂
------解决思路----------------------
PingCompletedEventArgs   这个不是事件参数么??
------解决思路----------------------
p.SendAsync("192.168.1.101", str);


private void test(object sender, PingCompletedEventArgs e)
{
    string str = e.UserState  as string;
    ...