- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
代码:
public string GetTextWebRequest(string url)
{
WebClient cl = new WebClient();
cl.DownloadStringCompleted += new DownloadStringCompletedEventHandler(cl_DownloadStringCompleted);
cl.DownloadStringAsync(new Uri(url));
are.WaitOne();
return _textdata;
}
void cl_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
_textdata = e.Result;
are.Set();
}
为什么我不使用“DownloadString”方法?因为我使用的是紧凑型框架,而异步是我唯一的选择。
无论如何,我的问题是如果主(调用)线程被阻塞,则不会调用“DownloadStringCompleted”。因此永远不会解锁。
我唯一的想法是 WebClient 在调用线程上调用“DownloadStringCompleted”,这没有意义吗?
我有点迷路了。
最佳答案
My only thoughts is that WebClient is calling 'DownloadStringCompleted' on the calling thread, which doesn't make sense?
但这正是正在发生的事情。它记录得很糟糕,但是这个方法+事件遵循后台 worker 模型。您可以在 DownloadStringCompletedEventArgs 成员中看到这种关系。
Bgw 模式在 WinForms(相关)库的不同地方使用。例如,请参见 PictureBox 控件。
因此,结论:不要阻塞...您必须设计一种事件驱动的方法。
关于c# - 线程 - ResetEvent 和 WebClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330528/
我已经编写了一个 DirectSoundWrapper,但我只能通过 MTA 线程访问接口(interface)。所以我创建了一个线程,它在后台工作并在队列中执行操作。我做过这样的事情: privat
while(1) 在事件循环中继续,即使事件被重置。下面是我的代码。我已经在问题所在的代码中的注释中提到了实际问题。提前感谢您的帮助:) DWORD WINAPI workerThreadProce
我继承了一些这样的代码: m_mutex.Lock(); ResetEvent( m_hSyncObject ); m_mutex.Unlock(); 与 SetEvent() 相同 在这种情况下是否
我无法理解PulseEvent或比赛条件。但是为了避免这种情况,我尝试改为SetEvent,每次尝试ResetEvent之前WaitForMultipleObjectsEx。 这是我的流程: 线程一-
我正在编写一个 VC++ 应用程序。只是为了争论,什么会导致 ResetEvent API 失败?微软文档对此并不清楚。谢谢。 最佳答案 最常见的无效句柄会导致失败。反过来,无效句柄可能由以下原因导致
代码: public string GetTextWebRequest(string url) { WebClient cl = new WebClient();
如果使用 setEvent 设置手动重置事件但不使用 ResetEvent 重置,会发生什么情况;并且该事件被多次触发。即在处理事件时,再次设置事件。 以下是示例任务: void foo() { ..
我正在尝试为 Linux 环境翻译一些使用 Windows 函数编写的代码,但我无法弄清楚这些代码在 Linux 中的等效性。我对 WaitForSingleObject 的理解是它等待标志,并在函数
我觉得这段代码没有发挥应有的作用。我把它拼凑在一起并且可以工作,但我不完全理解异步线程和 ResetEvents。 当我使用发送 100 个连接的多线程客户端测试此监听器时,响应时间从前 10 次左右
我是一名优秀的程序员,十分优秀!