PDA

View Full Version : سوال: اجرای متدی که چند پارامتر ورودی داره توسط thread



MehdiElexal
پنج شنبه 26 تیر 1393, 17:34 عصر
با سلام دوستان من یه جا بد گیر کردم
چطور این تابع رو بندازم تو ترد ؟
void SendMessageForm(string MobileNumber, string MessageText, int WaitForSendMessage)
{

SIM900Module.SIM900ModuleClass.SendMessagePDU(Mobi leNumber, MessageText, WaitForSendMessage);
Thread.Sleep(10000);

}

با تشکر

omid nasri
پنج شنبه 26 تیر 1393, 18:27 عصر
private void Load(object sender, EventArgs e)
{
System.Threading.
Thread T = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(Method)) ;
T.Start();
}

در این قسمت نوشتم متود (Method) نام تابع رو وارد کن بدون پردانتر باز و بسته فقط نام وارد شود، دوم اگه ورودی داری تو قسمت استارت ورودی ها رو به ترد بده.
مشکلی بود پخ بزن

MehdiElexal
جمعه 27 تیر 1393, 15:20 عصر
ممنون دوست عزیز اما من تابعم رو نوشتم و باید به تابع ورودی های مورد نیازش رو بدم !
پس ورودی های تابع رو کجا بدم ؟

MehdiElexal
جمعه 27 تیر 1393, 15:52 عصر
private void Load(object sender, EventArgs e)
{
System.Threading.
Thread T = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(Method)) ;
T.Start();
}

در این قسمت نوشتم متود (Method) نام تابع رو وارد کن بدون پردانتر باز و بسته فقط نام وارد شود، دوم اگه ورودی داری تو قسمت استارت ورودی ها رو به ترد بده.
مشکلی بود پخ بزن

بازم حل نشد
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace thread_void
{
public partial class Form1 : Form
{
public static string MobileNumberSMS;
public static string TextSMS;
public static int WaitSMS;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

System.Threading.
Thread T = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(SendMess ageForm));
T.Start();
}

void SendMessageForm(MobileNumberSMS)
{

SIM900Module.SIM900ModuleClass.SendMessagePDU(Mobi leNumberSMS, TextSMS, WaitSMS);
Thread.Sleep(10000);


}
}
}




خطا ها
Error 2 No overload for 'SendMessageForm' matches delegate 'System.Threading.ParameterizedThreadStart'

abbas.oveissi
جمعه 27 تیر 1393, 17:40 عصر
همانطور که توی اون یکی تاپیک گفتم دلیگیت ParameterizedThreadStart فقط تابع هایی با یک ورودی آن هم از نوع Object قبول میکند.در این تاپیک http://barnamenevis.org/showthread.php?460946-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%AA%D8%B1%D8%AF-%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%D9%87-%D8%A8%D9%87-%D8%AA%D8%A7%D8%A8%D8%B9-%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C-%D8%B1%D8%B4%D8%AA%D9%87-%D8%A7%DB%8C طرز استفاده ازش رو براتون نوشتم.

مهرداد صفا
جمعه 27 تیر 1393, 19:20 عصر
سلام.
به این صورت امتحان کنید


Thread myThread=new Thread(()=>SendMessage(p1,p2,p3));
myThread.Start();

sohil_ww
جمعه 27 تیر 1393, 23:48 عصر
تو حالت عادی ما نمی تونیم بیشتر از یک متثغییر به یک ترد پاس بدیم اینجور مواقع یا از متغییر های عمومی استفاده کنی و مقدار بدی به اون ها که اون وقت باید حواست به همزمانی هم باشه و اگه نیاز باشه الگوریتم همزمانی به کار ببری مورد بعدی استفاده از لاندا استفاده کنی