Некоторые удобные, которые я использую часто:
Ctrl + J -> Силы Intellisence для появления.
Ctrl + Высокий звук + L -> Шоу Проводник Решения.
Вы можете сделать следующее:
Что-то вроде:
BasicHttpBinding myBinding = new BasicHttpBinding("ConfigName");
myBinding.CloseTimeout = .......
myBinding.OpenTimeout = .......
myBinding.ReceiveTimeout = .......
myBinding.SendTimeout = .......
EndpointAddress myEndpoint = new EndpointAddress("http://server:8181/yourservice");
YourServiceClient proxy = new YourServiceClient(myBinding, myEndpoint);
Таким образом, вы можете использовать базовую конфигурацию при описании тайм-аутов привязки, и при этом вы можете настроить нужные параметры и создать на их основе свой клиентский прокси.
При отсутствии более простого решения можно попытаться запустить часть кода в другом процессе с помощью CreateRemoteThread (), поясняет здесь .
-121--2733367-Если необходимо дождаться выполнения всех задач, необходимо выполнить их самостоятельно. Потоки ThreadPool являются фоновыми потоками и не поддерживают работу приложения.
Это относительно чистый способ справиться с таким типом ситуации:
using (var mre = new ManualResetEvent(false))
{
int remainingToProcess = workItems.Count(); // Assuming workItems is a collection of "tasks"
foreach(var item in workItems)
{
// Delegate closure (in C# 4 and earlier) below will
// capture a reference to 'item', resulting in
// the incorrect item sent to ProcessTask each iteration. Use a local copy
// of the 'item' variable instead.
// C# 5/VS2012 will not require the local here.
var localItem = item;
ThreadPool.QueueUserWorkItem(delegate
{
// Replace this with your "work"
ProcessTask(localItem);
// This will (safely) decrement the remaining count, and allow the main thread to continue when we're done
if (Interlocked.Decrement(ref remainingToProcess) == 0)
mre.Set();
});
}
mre.WaitOne();
}
При этом обычно лучше «сгруппировать» рабочие предметы, если у вас их тысячи, а не рассматривать их как отдельные рабочие предметы для threadpool. Это некоторые накладные расходы, связанные с управлением списком предметов, и поскольку вы не сможете обрабатывать 22000 одновременно, лучше сгруппировать их в блоки. Наличие отдельных предметов каждый процесс 50 или около того, вероятно, поможет вашей общей пропускной способности довольно немного...
-121--3464966-Можно создать вторую привязку в web.config и установить более длинный sendTimeout.
if (debug)
{
proxy = new MyClient("WSHttpBinding_MyLocal");
}
else
{
proxy = new MyClient("WSHttpBinding_MyDev");
}
<wsHttpBinding>
<binding name="WSHttpBinding_MyLocal" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:20:00"
...