我有一些简单的代码作为repro:
var taskTest = Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(5000);
}).ContinueWith((Task t) =>
{
Console.WriteLine("ERR");
}, TaskContinuationOptions.OnlyOnFaulted);
try
{
Task.WaitAll(taskTest);
}
catch (AggregateException ex)
{
foreach (var e in ex.InnerExceptions)
Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace);
}
Run Code Online (Sandbox Code Playgroud)
但是,我在try catch块中抛出一个意外的TaskCanceledException(它在AggregateException InnerExceptions对象中)."任务被取消了".
为什么我得到这个例外?任务的Continuation永远不会触发,它没有生成任何异常,但在等待时我仍然得到聚合异常....
我希望有人能解释一下这对我有多大意义:)
我正在尝试使用$pushc#驱动程序在mongodb中的更新查询中使用.
该Update.Push(...)方法需要一个字符串名称(这很好),并且BsonValue需要"推送".这是我遇到问题的地方.我正在尝试将非简单类型推送到字段的数组.
例如: { $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }
这在Mongo控制台中运行良好,但我无法弄清楚如何将我的对象变成BsonValue.我试过BsonValue.Create(myObjectInstance)但是这给了我一个错误,说.NET类型无法映射到BsonValue.
我错过了一些简单的事吗?
我有一个稍微不寻常的情况,我需要在我的服务器上为成千上万的移动用户维护CLIENT tcp连接到另一台服务器(基本上移动设备能够连接到我的中间层服务器,这样可以保持更稳定的连接到移动设备的第三方服务器).
无论如何,我使用异步套接字(包含在SslStream中)开发了我的服务器应用程序,并且现在有1000个客户端会话全时运行.我对结果感到非常满意,因为我看到单核处理器的平均CPU使用率为0-10%,并且随着时间的推移大约使用了60mb的ram.
我的问题是,如何扩展它以便我可以在我的服务器上运行100,000或200,000或更多客户端会话?同样,这有点非传统,因为我的服务器并不像服务器那样,因为我担心传出的连接,而不是传入.
我知道有一个注册表设置MaxUserPort需要更改,以超出默认值,似乎是5000.但是,似乎有另一个硬限制65535,我不太清楚该限制所在的位置.这是每个网络接口的限制吗?它是全局Windows限制吗?这是每个流程的限制吗?
如果它是每个网络接口的限制,我可以添加多个网络接口并将客户端会话套接字绑定到每个接口(例如:接口1上的65k,接口2上的65k等)?
我也不太清楚是什么,如果有任何套接字选项或属性我应该设置来帮助解决问题.现在我没有使用任何套接字选项.
我真的很感激有关这个问题的任何想法,因为在这个问题上很难得到明确的建议.谢谢!
我想将一个流式传输mms:// url到我的iPhone应用程序,但到目前为止很难获得有关该主题的信息.我知道有几个应用程序可以做到(FStream,WunderRadio,Tuner),我已经阅读了一些关于它们的说明,可能使用libmms和ffmpeg来完成这项任务.
有谁知道实现这一目标的方法?那里有一个我缺少的图书馆,或者已经有一些例子吗?我希望这会像简单一样容易
[someLibrary streamMMSUrl:@"mms://mymmsurlhere.com"]
谢谢你的帮助!
所以,Gmail的IMAP有点'怪异'.他们使用IMAP文件夹来表示标签.我通常认为IMAP中的电子邮件只能属于一个"文件夹",但是对于Gmail,电子邮件可以属于许多"文件夹",这使我们能够非常接近标签.
我的问题是,我正在编写一个gmail客户端(因此像Starring,删除和存档这样的工作比标准的imap客户端更直观),但我希望能够显示给定的电子邮件,哪些文件夹(标签)它在.
据我所知,这并不容易(我必须遍历每个文件夹中的每条消息,看看它在哪些中).
有谁知道一个整洁的方法来做到这一点?或者我是否正确地假设没有简单的方法?
这是场景:我有一个简单的ListView显示Twitter提要.我有一个CursorAdapter,它从sqlite中获取推文.当我在光标上调用requery()时,我希望将获取新的推文,这些推文已经被添加到数据库中.这一切都很好,在这种情况发生后,新的项目甚至可以在ListView中看到.
问题是滚动位置似乎是根据项目位置偏移量保存的.因此,假设我的ListView中的第一个可见位置是4.当我重新查询并且将2个新项目添加到列表顶部时,ListView将第一个可见项目滚动位置保持为4,但是因为列表中有两个新项目,我现在在第4位看到与我刷新之前不同的项目.此图像说明了之前和之后:

请注意Before,Tweet D是第一个可见项目,之后,Tweet B现在成为第一个可见项目.
我的问题是,在调用requery时如何根据光标位置保持相同的滚动位置,这样在这个例子中,Tweet D仍然是重新查询后的第一个可见项?
android xamarin.android android-listview android-cursoradapter
我已经获得了6位信息来访问网站上的一些数据:
现在,我已经看过DotNetOpenAuth和OAuth.NET库,虽然我确信他们非常有能力做我需要的东西,但我无法弄清楚如何以这种方式使用它们.
有人可以发布一些示例代码,说明如何在任一库中使用Url(第1点)(或任何其他可能同样有效的方式)?
谢谢!
我可以访问.com区域文件.区域文件是一个文本文件,其中包含域名列表及其名称服务器.它遵循以下格式:
mydomain NS ns.mynameserver.com.
mydomain NS ns2.mynameserver.com.
anotherdomain NS nameservers.com.
notinalphadomain NS ns.example.com.
notinalphadomain NS ns1.example.com.
notinalphadomain NS ns2.example.com.
Run Code Online (Sandbox Code Playgroud)
如您所见,每个域可以有多行(当有多个名称服务器时),并且文件不是 按字母顺序排列的.这些文件大小约为7GB.
我正在尝试获取上一个文件和新文件,并将它们进行比较以查找:
由于7GB太大而无法将整个文件加载到内存中,显然我需要在流中读取.我目前认为最好的方法是对两个文件进行多次传递.字母表中每个字母的一次传递,加载第一次传递中以'a'开头的所有域.一旦我从旧文件和新文件中获得了所有"a"域,我就可以在内存中进行非常简单的比较来查找更改.
问题是,即使通过char读取char,并按照我能够想到的优化,每次传递文件大约需要200-300秒,收集当前传递字母的所有域.因此,我认为在当前状态下,我正在查看大约一个小时来处理文件,甚至没有将更改存储在数据库中(这将花费更多时间).这是在双四核xeon服务器上,因此对它投入更多的马力对我来说不是一个选择.这个时间可能不是一个交易破坏者,但我希望有人对如何加快速度提出一些明智的想法......不可否认,我还没有尝试过async IO,这是我的下一步.
提前感谢任何想法!
我有一个带有数组字段的文档,类似于:
{
"_id" : "....",
"Statuses" : [
{ "Type" : 1, "Timestamp" : ISODate(...) },
{ "Type" : 2, "Timestamp" : ISODate(...) },
//Etc. etc.
]
}
Run Code Online (Sandbox Code Playgroud)
如何通过指定其类型值来更新特定状态项的时间戳?
我想知道在c#中的异步套接字中,在EndRead调用中接收0个字节意味着服务器实际上已经断开了我们的连接吗?
我看到的很多例子都表明情况就是这样,但我收到的断线频率要高得多.
这段代码是否正确?或者endResult <= 0对连接状态没有任何意义?
private void socket_EndRead(IAsyncResult asyncResult)
{
//Get the socket from the result state
Socket socket = asyncResult.AsyncState as Socket;
//End the read
int endResult = Socket.EndRead(asyncResult);
if (endResult > 0)
{
//Do something with the data here
}
else
{
//Server closed connection?
}
}
Run Code Online (Sandbox Code Playgroud) 我在我自己的机器上使用php工作的iPhone Apple推送通知(APNS).我不阻止端口2195传出,但似乎HostGator确实并且不愿意打开端口.我想象很多网络主机是相同的,但我想知道是否有人发现一个不阻止2195和2196.
我意识到我可以使用VPS来做到这一点,但我想降低成本,我不会发出很多通知,而且我知道我创建的非常简单的PHP脚本可以正常工作.
我花了几个小时试图解决这个问题,但我无法让它发挥作用.我有一个C#加密例程,我需要在php中匹配.我无法改变C#版本,这不是一个选项(第三方对此很坚定).
这是C#代码:
//In C#
// Console.WriteLine(ApiEncode("testing", "56dsfkj3kj23asdf83kseegflkj43458afdl"));
// Results in:
// XvHbR/CsLTo=
public static string ApiEncode(string data, string secret)
{
byte[] clear;
var encoding = new UTF8Encoding();
var md5 = new MD5CryptoServiceProvider();
byte[] key = md5.ComputeHash(encoding.GetBytes(secret));
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = key;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.PKCS7;
byte[] input = encoding.GetBytes(data);
try { clear = des.CreateEncryptor().TransformFinalBlock(input, 0, input.Length); }
finally
{
des.Clear();
md5.Clear();
}
return Convert.ToBase64String(clear);
}
Run Code Online (Sandbox Code Playgroud)
这是我在PHP中提出的最好的东西:
//In PHP
// echo apiEncode("testing", "56dsfkj3kj23asdf83kseegflkj43458afdl");
// Results in: …Run Code Online (Sandbox Code Playgroud) 我一直在阅读有关使用MySql的Prepared语句,并且.NET/Connector确实支持它们.
我想知道的是,如果我使用预准备语句来调用相同的存储过程数千次,那么是否比使用预准备语句更快或更好的性能(因为存储过程应该已经编译好了)?
例如:
var mySqlCmd = new MySqlCommand(con, "call sp_someProcedure(@param1, @param2);");
mySqlCmd.Prepare();
mySqlCmd.Parameters.AddWithValue("@param1", "");
mySqlCmd.Parameters.AddWithValue("@param2", "");
for (int i = 0; i < 1000; i++)
{
mySqlCmd.Parameters["@param1"].Value = i.ToString();
mySqlCmd.Parameters["@param2"].Value = i.ToString();
mySqlCmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×4
mongodb ×2
php ×2
sockets ×2
android ×1
asynchronous ×1
cryptography ×1
encryption ×1
gmail ×1
gmail-imap ×1
hosting ×1
imap ×1
iphone ×1
large-files ×1
mms ×1
mysql ×1
oauth ×1
pfx ×1
sql ×1
streaming ×1
task ×1
text ×1
tripledes ×1
windows ×1