سوال : استفاده از تایمر در سی شارپ
#1
Note 
سلام

من با تایمر کار کردم اما اینجا به یک مشکل بر خوردم اونم اینه که دارم یک قسمت میسازم که مثلا به محظ ورود کاربر به اتاق چت اون رو Member کنه اما با فاصله زمانی 5 ثانیه اینکارو بکنه ، یعنی اینکه اول آیدی که وارد شد رو ذخیره کنه و بعد از گذشت 5 ثانیه اون رو member کنه

به مثال زیر توجه کنید :
[CSHARP]
private void room1(object sender, agsXMPP.protocol.client.Presence pres)
{
if (InvokeRequired)
{
BeginInvoke(new agsXMPP.protocol.client.PresenceHandler(room1), new object[] { sender, pres });
return;
}
else
{

if (pres.Type == PresenceType.available)
{
x.Send("<iq xmlns='jabber:client' to='" + txtroom.Text + "@conference.jabber.org' type='set' id='353'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member' jid='" + pres.From.Resource + "@jabber.org' /></query></iq>");
}
}
}
[/CSHARP]

این دستور هر کی که وارد اتاق چت بشه رو member میکنه
من میخوام دقیقا همین کد رو با تایمر انجام بده همونطور که بالا گفتم

من خودم اینکار و انجام دادم اما اشتباه بود ، چطوری؟ اینجوری :
من اومدم تعریف کردم که به محض ورود آیدی 5 ثانیه بعد آیدی رو member کنه ، با این فقط یک آیدی member میشد و آیدی های بعدی که وارد میشدند هیچ کاری روی اونها انجام نمیشد و به اصطلاح آیدی از دست برنامه در میرفت
من میخوام آیدی ها رو به محض ورود حالا چه یه آیدی و چه صد آیدی ، اول ذخیره کنه و بعد تک تک هرکدوم رو با گذشتِ 5ثانیه member کنه و وقتی که member کردن تموم شد لیست ذخیره ها رو پاک کنه ، اینجوری دیگه آیدی از دست برنامه در نمیره و تک تک آیدی ها به ترتیب با فاطله زمانی 5 ثانیه member میشن و لیست ذخیره ها هم پاک میشه و برای تکرار این کار برای بار های بعد آماده میش و آیدی اصلی خود برنامه هم مسدود نمیشه

ممنون

پاسخ
#2
Note 
سلام میتونی از sleep استفاده کنی
در صورت امکان پروژه رو ضمیمه کن تا بهتر بتونیم کمک کنیم

پاسخ
#3
Note 
اینم پروژه با سی شارپ 2010 نوشته شده :


پاسخ
#4
Note 
agsXMPP رو هم بذارید

.Are you a programmer? welcome home
ببخشید که یکم کم پیدا شدیم Blush
پاسخ
#5
Note 
اون کامپوننت کمی حجمش بالاست من همینطوری یه چیز درست کردم فکر کنم باید کار کنه میتونی بجای اون کدی که member میکنه تایمر رو فعال کنی بعد کد اصلی رو تو تایمر بذاری باید حواست باشه که بعد تایمر باید خودش رو غیر فعال کنه

[CSHARP]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//./////////////////////////////

using agsXMPP;
using agsXMPP.Xml.Dom;
using agsXMPP.protocol.client;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
XmppClientConnection x = new XmppClientConnection();

private void button1_Click(object sender, EventArgs e)
{
x.Server = "nimbuzz.com";
x.ConnectServer = "o.nimbuzz.com";
x.Open(txtid.Text, txtpw.Text, txtres.Text , 50);
x.AutoRoster = true;

x.OnAuthError += new XmppElementHandler(failed);
x.OnLogin += new ObjectHandler(connected);
x.OnClose += new ObjectHandler(dc);
x.OnPresence += new agsXMPP.protocol.client.PresenceHandler(room);
}
private void failed(object sender, Element e)
{
if (base.InvokeRequired)
{
base.BeginInvoke(new XmppElementHandler(failed), new object[] { sender, e });
}
else
{
txtid.BackColor = Color.Red;
txtpw.BackColor = Color.Red;
txtres.BackColor = Color.Red;
txtid.Enabled = true;
txtpw.Enabled = true;
txtres.Enabled = true;
}
}

private void connected(object sender)
{
if (base.InvokeRequired)
{
base.BeginInvoke(new ObjectHandler(connected), new object[] { sender });
}
else
{
txtid.BackColor = Color.Green;
txtpw.BackColor = Color.Green;
txtres.BackColor = Color.Green;
txtid.Enabled = false;
txtpw.Enabled = false;
txtres.Enabled = false;
}
}

private void dc(object sender)
{
if (base.InvokeRequired)
{
base.BeginInvoke(new ObjectHandler(dc), new object[] { sender });
}
else
{
txtid.BackColor = Color.Yellow;
txtpw.BackColor = Color.Yellow;
txtres.BackColor = Color.Yellow;
txtid.Enabled = true;
txtpw.Enabled = true;
txtres.Enabled = true;
}
}

private void button2_Click(object sender, EventArgs e)
{
x.Close();
}

private void room(object sender, agsXMPP.protocol.client.Presence Pres)
{


if (InvokeRequired)
{
base.BeginInvoke(new agsXMPP.protocol.client.PresenceHandler(room), new object[] { sender, Pres });
return;
}
else
{
if (Pres.Type == PresenceType.available)
{

if (checkBox1.Checked == true)// AUTO MEMBER
{
timer1.Interval = 5000;
timer1.Enabled = true;

// x.Send("<iq xmlns='jabber:client' to='" + txtroom.Text + "@conference.nimbuzz.com' type='set' id='353'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member' jid='" + Pres.From.Resource + "@nimbuzz.com' /></query></iq>");
}
else
{
if (checkBox1.Checked == false)
{
MessageBox.Show("Auto Member Khamosh Shod");
}
}
}
}
}

private void button3_Click(object sender, EventArgs e)
{
try
{
x.Send("<presence to='" + txtroom.Text + "@conference.nimbuzz.com/" + txtid.Text + "' xml:lang='en'><x xmlns='http://jabber.org/protocol/muc'><password>" + txtroompw.Text + "</password></x></presence>");
}
catch { }
}

private void button4_Click(object sender, EventArgs e)
{
x.Send("<presence to='" + txtroom.Text + "@conference.nimbuzz.com/' type='unavailable'></presence>");
}

private void timer1_Tick(object sender, EventArgs e)
{
x.Send("<iq xmlns='jabber:client' to='" + txtroom.Text + "@conference.nimbuzz.com' type='set' id='353'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member' jid='" + Pres.From.Resource + "@nimbuzz.com' /></query></iq>");
timer1.Enabled = false;
}




}
}
[/CSHARP]

.Are you a programmer? welcome home
ببخشید که یکم کم پیدا شدیم Blush
پاسخ
#6
Note 
سلام من تازه اومدم خونه و انجام دادم اما توی تایمر ذث Pres گیر میده و میگه : Does Not Exist in the current context

تنها در یک صورت به Pres گیر نمیده که توی این قرار بگیره :
[CSHARP]
if (Pres.Type == PresenceType.available)
{
}
[/CSHARP]

و خود این هم تنها در یک صورت ارور نمیده که توی Voide خودش یعنی این باشه :
[CSHARP]
private void room(object sender, agsXMPP.protocol.client.Presence Pres)
{


if (InvokeRequired)
{
base.BeginInvoke(new agsXMPP.protocol.client.PresenceHandler(room), new object[] { sender, Pres });
return;
}
else
{
}
}
[/CSHARP]

چیکار کنم!؟!؟

پاسخ
#7
Note 
سلام به همه
این کد تایمر رو اینطوری کن شاید درست بشه
[CSHARP]private void timer1_Tick(object sender, EventArgs e, agsXMPP.protocol.client.Presence Pres)[/CSHARP]

***********
پاسخ
#8
Note 
[تصویر:  ?di=33QH]

این رو داد

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سوال استفاده از بانک اطلاعاتی خارجی در ویندوز فون M.Taghi 2 599 05-07-2015 ساعت 10:11
آخرین ارسال: The Arrow
  سوال استفاده از API ها The Arrow 1 689 26-06-2015 ساعت 16:44
آخرین ارسال: Ali Developer
Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 979 23-04-2015 ساعت 09:24
آخرین ارسال: The Arrow
Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 993 16-01-2015 ساعت 00:32
آخرین ارسال: The Arrow
Note میزان استفاده از رم با UserControl The Arrow 4 953 20-11-2014 ساعت 20:58
آخرین ارسال: The Arrow
Note دیتابیس SQLite در سی شارپ The Arrow 3 2,433 07-11-2014 ساعت 22:40
آخرین ارسال: VBProgrammer
Note FileAssociation در سی شارپ The Arrow 1 567 05-11-2014 ساعت 12:32
آخرین ارسال: SOFTAFZAR
Note آموزش کامل سی شارپ (ویدئو) xMAN 2 682 02-10-2014 ساعت 12:50
آخرین ارسال: xMAN
Note explorer سی شارپ cMan 1 485 30-08-2014 ساعت 12:07
آخرین ارسال: SOFTAFZAR
Note پیدا کردن متن در سی شارپ arfanz 7 879 27-08-2014 ساعت 01:10
آخرین ارسال: The Arrow

کاربرانِ درحال بازدید از این موضوع:   1 مهمان