问个关于C#中创建多个线程的问题..急,谢了

IPvECMS 2008-11-22 05:41:56


//动作函数
void AutoPostDate1()
{
int money = 10000; //下注金额
//quint = QutoInt(comboBox1.Text); //下注区域
//下注动作
int i = 1;
//try
//{

i = Http.AutoPost.post(prizeID, quint.ToString(), tep.ToString(), money.ToString(), server, aspcookies1);
if (i == 0)
{
SetTextBox("本期投注成功.请登录网站查看结果");
return;
}
else
{
SetTextBox("本期投注时间已过,请等待下次投注");
return;
}

}

以上这个函数是向某个网站提交数据...

private void button2_Click(object sender, EventArgs e)
{

if (comboBox1.Text == "")
{
MessageBox.Show("请选择投注区域!!", "系统提示");
return;
}
if (comboBox2.Text == "")
{
MessageBox.Show("请选择投注方向!!", "系统提示");
return;
}

//创建两个线程 去提交数据节
Thread.threadpost = new Thread(AutoPostDate);
Thread.threadpost1 = new Thread(AutoPostDate1);
//Thread.threadpost = new Thread(AutoPostDate2); //以下两个线程无法与上面两个线程同时执行
//Thread.threadpost1 = new Thread(AutoPostDate3);

threadpost.Start();
threadpost1.Start();
}





要求:同时post 四个数据到服务器上..
要让服务器同一时间接收到我post的数据..所以我这边要同时提交数据,,目前按我上面写的,已经实现同时post两个数据提交到服务器上了..但是如果我再多创建两个线程的话,就不行了..后面的线程达不到同时post数据了...

请问: 有没有什么办法可以让四个线程在同一时间post数据...

还有一个现象: 我这个编译成软件后..如果我双开,开两个实例的话,点A实例里面的提交按钮后,马上点B实例里面的按钮(两个实例里面都只创建了两个线程)..则可以实例post四条数据到服务器上,
但是双开两个软件很麻烦的,有什么办法让我点一下按钮就post数据上去呢?
...全文
419 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
关键如何解决呀
slimfeng 2008-11-22
  • 打赏
  • 举报
回复
多线程也不能完全实现同步完成,只是在一定程度上的同步,跟每个线程执行的内容有关,从AutoPostDate来看
主要耗时间的就是Http.AutoPost.post,楼主可以测试一下执行一次这样的操作最少需要多长时间;
还有SetTextBox在多线程同时操作时肯定会存在加锁、解锁的问题
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
顶顶
xlqdml 2008-11-22
  • 打赏
  • 举报
回复
路过,帮你顶。
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
后面的两个线程执是执行了,就是稍后才执行。。没在一秒内执行
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jimmyroc 的回复:]
另外写个程序啊 启动程序2次 比手按快 看要传参数进去不
[/Quote]

传是能传进去..不过那样也太.....鼻涕糊的了吧
jimmyroc 2008-11-22
  • 打赏
  • 举报
回复
另外写个程序啊 启动程序2次 比手按快 看要传参数进去不
jimmyroc 2008-11-22
  • 打赏
  • 举报
回复
上面写错是每个线程 在总的时间里分配一个时隙给给一个线程
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
我就是搞不清怎么整进程..
如果可以在代码里面创建投注动作的进程,不说开两个,就是开四个我也愿意呀,HOHO..
jimmyroc 2008-11-22
  • 打赏
  • 举报
回复
cpu 执行程序时 先给进程分配一个时间段 对于每个进程 分配一个时隙的,意思进程在一个cpu钟排队来执行的!所以会有时间差的!当一个线程锁死后其他是不执行的!我是这么理解的!没高手的来解答我的问题啊!
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 tinghai_xu 的回复:]
你开两个进程看看呢
[/Quote]

如果我打开两个软件的话,每个软件可以post两条上去,
只要操作快..


你说的开两个进程,怎么开?代码里面?
tinghai_xu 2008-11-22
  • 打赏
  • 举报
回复
你开两个进程看看呢
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
有时候可能还是一个线程在运行
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
我是有一个按钮:点击按钮..然后就创建四个线程.进行数据post 代码如下..

void MyThread()
{
int s = 0;
for (s = 0; s < 4; s++) //这里改成4的话,后面两个线程执行了 但是却与前面两个线程不是一起提交的数据...而是慢了一点点,大约两秒钟以内...所以后面两个线程提交的数据没有提交成功..
{
Thread th1;
th1=new Thread(new ThreadStart(AutoPostDate));
th1.Start();
//th1.Join(); 不能等到一个线程进行完.如果进行完的话,只能提交一个数据了
}
}


jimmyroc 2008-11-22
  • 打赏
  • 举报
回复
是与cpu有关,我测试下了,只用一个核 就只能建立一个连接 !难道c#多线程没用吗
  • 打赏
  • 举报
回复
1秒以内,即使只有2个链接也不会这么久,即使cpu只有一个也不会这么久,肯定是你的线程之前互相影响,死锁了。你可以运行的久的,是不是总是只有两个在working?
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
是不是与CPU有关呢?
IPvECMS 2008-11-22
  • 打赏
  • 举报
回复
1秒内
  • 打赏
  • 举报
回复
你的同时的精度是多少?
就是每个线程post到的时间允许多少误差?
xu_2007 2008-11-22
  • 打赏
  • 举报
回复
你用的是同步通讯还是异步通讯?
加载更多回复(5)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧