【发布时间】:2016-04-18 02:34:23
【问题描述】:
所以我试图从 Timer 执行一个方法,问题是每次我调用该方法并传递一个字符串作为参数时,字符串自动设置为 NULL,这很奇怪,有没有修复或什么,这里有一些想看的代码
private void timer1_Tick(object sender, EventArgs e)
{
int currentHour = FixTime(DateTime.Now.ToString("hh tt"));
int currentMinute = FixTime(DateTime.Now.ToString("mm tt"));
int currentSeconds = FixTime(DateTime.Now.ToString("ss tt"));
string currentTT = DateTime.Now.ToString("tt");
int userHour = Settings.Default.hour;
int userMinute = Settings.Default.minutes;
int userSeconds = Settings.Default.seconds;
string userTT = Settings.Default.TT;
if (currentHour == userHour && currentMinute == userMinute &&
currentSeconds == userSeconds && currentTT == userTT)
{
MakeThePost(postTextBox.Text); // the postTextBox.Text field automatically is set to null
}
}
private void MakeThePost(string data)
{
string text = data;
if (!String.IsNullOrEmpty(text))
{
fb.Post("me/feed", new { message = text });
}
else
MessageBox.Show("Nothing to post on facebook", "Field is empty",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
更新: 所以显然问题不在于计时器,甚至不在 MakeThePost 中,真正的问题在于我试图显示的另一种形式,当它显示时,构造函数会生成一个新的 Form1 对象,为什么我做这个?,因为我想访问主窗体中的控件,但是当我执行 Form1 构造函数来创建一个新对象时,Form1 postTextBox 控件停止更新它的 Text 属性,所以还有另一种访问主窗体的方法控件而不初始化对象?
【问题讨论】:
-
MakeThePost()方法内部发生了什么?postTextBox.Text传入函数时的值是多少? (后面可以用断点验证) -
您使用的是哪个
Timer类? -
@heltonbiker 该值是由用户生成的,我总是在它到达那里之前填充文本,但是当它到达计时器时它会自动设置为 null,这就是 MakeThePost() 方法的作用:私人无效MakeThePost(字符串数据){字符串文本=数据; if (!String.IsNullOrEmpty(text)) { fb.Post("me/feed", new { message = text }); } }
-
@Luc Morin System.Windows.Forms.Timer
-
好的,所以这可能不是 UI 线程问题。什么是间隔?另外,您可以发布
MakeThePost方法(如果不是太长的话)吗?如果您要添加代码而不是在 cmets 中添加代码,请编辑您的问题。它让一切变得更清晰。