نمایش نتایج 1 تا 20 از 20

نام تاپیک: thread

  1. #1
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974

    thread

    با سلام
    من برای تکمیل بانک یک دیکشتنری از یک وب سرویس استفاده می کنم به این صورت که لغت را ورودی می گیرد و خروجی ترجمه مورد نظر کلمه را می دهد. من می خواهم با یک threade به جای while این کار را بکنم.من در زیر کدم را آوردم می خواستم بدانم چگونه با therade آن را جایگزین کنم؟
    Imports System.Data.OleDb
    Imports System.Data
    Public Class Form1
    Dim con As OleDbConnection
    Dim cmdSelect As OleDbCommand
    Dim dr As OleDbDataReader
    Function myInsert(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set france = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("France error")
    End If


    End Function

    Function myInsert2(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set italy = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("italy error")
    End If
    End Function
    Function myInsert3(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set spain = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("spain error")
    End If
    End Function
    Function myInsert4(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set pourteghal = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("pourteghal error")
    End If
    End Function
    Function myInsert5(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set russia = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("russia error")
    End If
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Dim a As net.webservicex.www.Language
    ' Dim b As New net.webservicex.www.TranslateService
    ' MessageBox.Show(b.Translate(net.webservicex.www.La nguage.EnglishTOFrench, "door"))
    'Dim a As net.webservicex.www.Language
    Dim id As Double
    Dim updateSql As String
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand("Select * From b", con)
    con.Open()
    dr = cmdSelect.ExecuteReader()
    id = dr("id")
    dr.Close()
    con.Close()
    '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
    Dim strWord, result As String
    Dim i As Double
    Dim b As New net.webservicex.www.TranslateService
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand("Select * From bank", con)
    con.Open()
    dr = cmdSelect.ExecuteReader()
    While dr.Read
    strWord = dr("english")
    i = dr("id")
    result = b.Translate(net.webservicex.www.Language.EnglishTO French, strWord)
    Call myInsert(result, i)
    result = b.Translate(net.webservicex.www.Language.EnglishTO Italian, strWord)
    Call myInsert2(result, i)
    result = b.Translate(net.webservicex.www.Language.EnglishTO Spanish, strWord)
    Call myInsert3(result, i)
    result = b.Translate(net.webservicex.www.Language.EnglishTO Portuguese, strWord)
    Call myInsert4(result, i)
    result = b.Translate(net.webservicex.www.Language.EnglishTo Russian, strWord)
    Call myInsert5(result, i)

    End While
    dr.Close()
    con.Close()
    MessageBox.Show("لغات گرفته شد!")
    '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
    updateSql = "Update b Set id = '" & i & "' "
    updateSql &= " Where val(m) = '1'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    End Sub

  2. #2

  3. #3
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    آقا کسی نیست سورس یک multi thrade را بدهد.
    در سایت فقط به مقاله و مثال های کوچک اکتفا شده.

  4. #4
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    حداقل یکی بگه چگونه در یک treade یک فانکشن را فراخوانی می کنیم؟
    من یکه چیزی نوشتم ولی درست کار نمیکنه و مشکل دارد.اگه بگید کجاست ممنون می شوم.
    PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    ' Dim myInsert As New clsCounter
    ' Dim Thread As New Threading.Thread(AddressOf myInsert.StartCounting)
    Dim t AsNew Threading.Thread(AddressOf myInsert)
    t.IsBackground =
    True
    EndSub
    Function myInsert(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999."Then
    Dim updateSql AsString
    updateSql = "Update bank Set france = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect =
    New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("France error")
    EndIf
    EndFunction

  5. #5

  6. #6
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    من کد و به شکل زیر اصلاح کردم ولی از حرف t خطا می گیرد به نظر شما اشکال کار در چیست؟
    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim t(از این خطا می گیره) AsNew Threading.Thread(AddressOf myInsert)
    ' t.IsBackground = True
    t.Start(20)
    EndSub
    PrivateSub myInsert(ByVal r, ByVal num)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999."Then
    Dim updateSql AsString
    updateSql = "Update bank Set france = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect =
    New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("France error")
    EndIf
    EndSub

  7. #7
    کاربر دائمی آواتار yavari
    تاریخ عضویت
    مهر 1384
    محل زندگی
    ایران - یزد
    پست
    1,014
    سلام

            Dim t As Threading.Thread
    t= New Threading.Thread(AddressOf myInsert)


    موفق باشید

  8. #8
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    همون خطی هم که خودتون نوشته اید صحیح است و نباید خطا بگیرد.
    مشکل از myInsert است این متد فقط باید یک Object بگیرد یا کلاً چیزی نگیرد.
    شما دو مقدار r و num میگیرد که حتی نوعش را هم مشخص نکرده اید !!!!!!!!!

  9. #9
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    نقل قول نوشته شده توسط __H2__ مشاهده تاپیک
    سلام
    همون خطی هم که خودتون نوشته اید صحیح است و نباید خطا بگیرد.
    مشکل از myInsert است این متد فقط باید یک Object بگیرد یا کلاً چیزی نگیرد.
    شما دو مقدار r و num میگیرد که حتی نوعش را هم مشخص نکرده اید !!!!!!!!!
    دوست عزیز می شود کمی بیشتر توضیح دهید و در صورت امکان نحوه صحیح آن را بگویید.
    با تشکر

  10. #10
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    نقل قول نوشته شده توسط __H2__ مشاهده تاپیک
    سلام
    همون خطی هم که خودتون نوشته اید صحیح است و نباید خطا بگیرد.
    مشکل از myInsert است این متد فقط باید یک Object بگیرد یا کلاً چیزی نگیرد.
    شما دو مقدار r و num میگیرد که حتی نوعش را هم مشخص نکرده اید !!!!!!!!!
    کسی نیست معنی حرف این دوستمونو به زبون ساده تر بگه؟

  11. #11
    کاربر دائمی آواتار yavari
    تاریخ عضویت
    مهر 1384
    محل زندگی
    ایران - یزد
    پست
    1,014
    سلام

    متد شما 2 ورودی میگیره

    myInsert(ByVal r, ByVal num)


    که باید برای ترید مشخص باشند
    میتونید یه دلگیت تعریف کنید و پارامترا رو پاس بدید

        Public Delegate Sub ThreadStartDELEGATE(ByVal rAs Integer,ByVal num As Integer)

    و بعد اینجوری فراخوانی کنید

                    Dim Thread As New ThreadStartDELEGATE(AddressOf myInsert)
    Thread.Invoke(r, num)


    موفق باشید

  12. #12
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    دوست عزیز با تشکر از راهنمایی شما من کدم را به شکل زیر در آوردم ولی از myinsert که با رنگ قرمز مشخص کردم خطا می گیرد.
     Public Delegate Sub ThreadStartDELEGATE(ByVal r As Integer, ByVal num As Integer)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Thread As New ThreadStartDELEGATE(AddressOf myInsert)
    Thread.Invoke(r, num)
    Dim strWord, result As String
    Dim i As Double
    Dim b As New net.webservicex.www.TranslateService
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand("Select * From bank", con)
    con.Open()
    dr = cmdSelect.ExecuteReader()
    While dr.Read
    strWord = dr("english")
    i = dr("id")
    result = b.Translate(net.webservicex.www.Language.EnglishTO French, strWord)
    End While
    dr.Close()
    con.Close()
    MessageBox.Show("لغات گرفته شد!")
    End Sub
    Private Sub myInsert()
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set france = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("France error")
    End If
    End Sub

  13. #13
    کاربر دائمی آواتار yavari
    تاریخ عضویت
    مهر 1384
    محل زندگی
    ایران - یزد
    پست
    1,014
    سلام

    دوست عزیز ، من رو این حساب که متد شما پارامتر داشت این راهکارو ارائه کردم
    PrivateSub myInsert(ByVal r, ByVal num)


    شما چرا باز ورش داشتی ؟!؟!...
      Private Sub myInsert()

  14. #14
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    اینم کد برنامه من
    فایل های ضمیمه فایل های ضمیمه

  15. #15
    کاربر دائمی آواتار yavari
    تاریخ عضویت
    مهر 1384
    محل زندگی
    ایران - یزد
    پست
    1,014
    نقل قول نوشته شده توسط arsalansalar مشاهده تاپیک
    اینم کد برنامه من
    سلام

    مشکل ترید با دادن پارامتر حل میشه !

    Imports System.Data.OleDb
    Imports System.Data
    Public Class Form1
    Dim con As OleDbConnection
    Dim cmdSelect As OleDbCommand
    Dim dr As OleDbDataReader
    Dim r, num As String
    Public Delegate Sub ThreadStartDELEGATE(ByVal r As Integer, ByVal num As Integer)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Thread As New ThreadStartDELEGATE(AddressOf myInsert)
    Thread.Invoke(r, num)
    Dim strWord, result As String
    Dim i As Double
    Dim b As New net.webservicex.www.TranslateService
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand("Select * From bank", con)
    con.Open()
    dr = cmdSelect.ExecuteReader()
    While dr.Read
    strWord = dr("english")
    i = dr("id")
    result = b.Translate(net.webservicex.www.Language.EnglishTO French, strWord)
    End While
    dr.Close()
    con.Close()
    MessageBox.Show("لغات گرفته شد!")

    End Sub
    Private Sub myInsert(ByVal r As Integer, ByVal num As Integer)
    If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999." Then
    Dim updateSql As String
    updateSql = "Update bank Set france = '" & r & "' "
    updateSql &= " Where val(id) = '" & num & "'"
    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\word.mdb")
    cmdSelect = New OleDbCommand(updateSql, con)
    con.Open()
    cmdSelect.ExecuteNonQuery()
    con.Close()
    Else
    MessageBox.Show("France error")
    End If
    End Sub
    End Class


    امیدوارم مشکلتون با ترید حل شده باشه
    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

  16. #16
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    دوست عزیز با تشکر از راهنمایی شما ولی از این خط اشکال می گیرد
        If r <> "The remote server returned an error: (999) Unable to process request at this time -- error 999."

    نوع خطایی که می گیرد این است:
     convertimg from string to double is invalid

  17. #17
    VIP آواتار raravaice
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Tehran
    سن
    40
    پست
    1,944
    دوست عزیز با تشکر از راهنمایی شما ولی از این خط اشکال می گیرد
    سلام

    متغیر R از نوع integer هست که شما داری با یه مقدار string مقایسش میکنی.!!

    موفق باسید

  18. #18
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    من بار اول اصلاً کد شما را نخواندم و فقط نگاهی سریع کردم و ایراد را دیدم ولی حالا کد شما دانلود کردم و دیدم،
    با عرض شرمندگی، کد بسیار آشفته و نامرتبط است و اصلاً هم ارتباطی به چند ریسمانی ندارد.
    کلاً چه کار میخواهید انجام دهید؟؟؟؟؟؟
    یک شرحی دهید که دارید چه کار میکنید ؟؟؟؟؟
    فیلد id در بانک اصلی از چه نوعی است؟؟؟ بالاخره String است یا Double یا Integer ؟؟؟؟؟؟
    متد Translate قرار است چه کار کند؟؟؟؟؟

  19. #19
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
    با سلام
    دوست عزیز من می خواهم از یک web service لغت دانلود کنم و برای این کار بانک لغت انگلیسم را می دهم و معادل فرانسوی اسپانییایی و ... دریافت می کنم و برای اینکه cpu usage من بالا نرود می خواهم از رسمان استفاده کنم.

  20. #20
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    چیزی که من از کد شما متوجه شدم آن است که شما یک دیتابیس اکسس دارید که شامل لغات انگلیسی از قبل تعریف شده و موجود است و حالا میخواهید معادل فرانسوی آن را با برنامه و از طریق وب سرویس پر کنید.

    اگر چنین باشد، به عنوان یک مدل فوق ساده و برای یادگیری کد زیر را توصیه میکنم.

    - دیتا بیس نمونه را قرار دادم برای صحت کارکرد برنامه فیلد [English] باید PrimaryKey باشد یا حداقل غیر تکراری و غیر NULL باشد و گرنه برنامه با مشکل مواجه میشود.

    - اگر از نسخه VB2008 استفاده کردید به جای یک IIf که من نوشتم از If استفاده کنید
    اصلاً هیچ وقت از IIf استفاده نکردم و نمیکنم ولی نسخه 2008 دستور جدیدی با نام If که خیلی کاملتر است دارد و همان کار IIf قدیم را انجام میدهد (و کمی بیشتر) .
    الآن هم به نیت If جدید از آن استفاده کردم ولی یادم آمد که نسخه 2005 را دارید، پس تغییرش دادم به IIf
    یعنی کد آن خط چنین میشود (در 2008)

    If(String.IsNullOrEmpty(strFrench), System.DBNull.Value, strFrench)

    البته اگر مطمئن بودم از نسخه 2008 استفاده میکردید، شاید چند خط دیگر را هم طور دیگری مینوشتم.
    چون از نسخه 2005 استفاده میکنید، نمیتواند فایل proj یا sln را باز کنید ولی میتوانید فایل frmMain.vb و frmMain.Designer.vb را دستی به پروژه قبلی خود اضافه کنید.

    - کد جاری فقط برای نمونه است، تا فرآیند و روش کلی را درک کنید و خودتان کد مورد نیازتان را بسته به خواسته هایتان بنویسید.
    مثلاً مکانیزم Cancel اصلاً مورد تأیید من نیست ولی در عوض ساده و قابل فهم است.

    - مطلب آخر آنکه ده روزی آنلاین نخواهم بود، پس اگر سوالی بپرسید، شرمنده تان میشوم.


    چون احتمالاً این آخرین پستم در سال 86 در این سایت است، عید را پیشاپیش به تمام دوستان و اعضای سایت تبریک میگم.
    انشا ا.... سال خوبی داشته باشد و جوان تر ها هم انشا ا... دست و پا و چشمشان را در چهارشنبه آخر سال جا نگذارند!
    جمیعاً موفق باشید.
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. اجرای تابع با پارامتر به صورت یک Thread.
    نوشته شده توسط hdv212 در بخش C#‎‎
    پاسخ: 16
    آخرین پست: یک شنبه 17 خرداد 1394, 00:11 صبح
  2. پیاده سازی تایمر با استفاده از Thread
    نوشته شده توسط Ghasem Dehghani در بخش C#‎‎
    پاسخ: 18
    آخرین پست: شنبه 15 اردیبهشت 1386, 17:40 عصر
  3. ایجاد thread
    نوشته شده توسط mahtab_18 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 11 اردیبهشت 1386, 09:59 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •