我需要在List上使用一些线程安全操作.
通常我只是简单地使用:
lock(List<T>)
{
   List<T>.Add();
   List<T>.Remove();
}
我也知道还有另一种方法,使用List<T>.但我不知道哪个更快或任何其他不同.
UPDATE1:
有些人建议我使用ConcurrentBag,因为这样更安全.但我担心它会让我的操作更慢.
我只是有很多线程需要在List中添加或删除一些对象,我只是想知道更好的性能方法.这就是我问的原因.
我是 Xamarin Android 的新手。我使用 Visual Studio 2015 社区版创建了一个应用程序。我已将解决方案配置设置为发布。
为了进行混淆,我使用了 .Net Reactor。
这就是我试图混淆的方式
1: 一旦我构建了应用程序,我将转到 Bin\Release 文件夹
2:混淆App.dll
3:在Bin\Release、Obj\Release和Obj\Release\assemblies中用混淆的dll替换原来的dll
4:转到工具->Android->发布
但是,当我尝试发布混淆的 dll 时,将被原始 dll 替换。
那么我做错了什么?我是否必须手动打包apk文件。如果是这种情况,我该怎么做?
有没有办法检测当前的UWP 将要退出?(由用户关闭或杀死进程)
我想向服务器发送一些关于应用程序将断开连接的请求,也希望在退出之前保存一些数据.
例如:有一个图像,我在图像中有一篇文章.我如何将该文章转换为字符串?你能告诉我还是给我一个解决方案?
这是我的代码:
Parallel.ForEach(Students, item =>
{
   StudentModel studentModel = new StudentModel(item);
   // Maybe he/she has alot of name
   foreach (var words in studentModel.StudentNames.Split(','))
   {
        if (string.IsNullOrWhiteSpace(words))
                return;
        string tempWords = words.Trim();
        // add it to student names list
        STUDENT_NAMES.Where(x => x.SearchWords == tempWords).FirstOrDefault().student.Add(studentModel);
     }
     // add it to student list
     STUDENT_MODELS.Add(studentModel);
});
我想做的是,我得到了学生名单.将其转换为学生模型,获取学生姓名(因为一个学生有很多名字),然后我将名字添加到名单,这是因为可能以后我需要得到同名学生并做一些事情......最后添加学生到学生模特名单.
问题发生在:
STUDENT_NAMES.Where(x => x.SearchWords == tempWords).FirstOrDefault().student.Add(studentModel);
这个地方总是发生:System.IndexOutOfRangeException
我已经将Paralle.Foreach更改为Parallel.For,并将foreach更改为for,但没有任何更改.我必须使用Parallel,因为学生数量大约为100000,如果我只使用foreach替换Parallel.Foreach,则需要160+秒,如果我锁定那个地方.....还是慢......如果使用Parallel. Foreach,它将使用20秒左右,但我无法处理异常.
我已经尝试用这个替换它:
StudentNames name = STUDENT_NAMES.Where(x => x.SearchWords == tempWords).FirstOrDefault();
if (null != name)
   name.student.Add(StudentModel);
但问题仍然发生在某些时候........如果我只是尝试...抓住并忽略它,然后当我以后访问STUDENT_NAMES列表时,它仍然抛出异常....... .....
我也尝试使用ConcurrentBag …
当我使用Json.net时,我总是会遇到这样的问题:
 List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(personsJson);
你们知道:有些时候因为服务器错误或任何其他问题,返回json字符串只是一个空值.
但当personsJson为空值时.Json.net将抛出:System.ArgumentNullException
我只需要它自动给我一个新的源对象,我的意思是当personsJson为null时,jut gime me back:new List of Person() ; 这将更有帮助,我不需要在逐一描述之前确定每个json字符串.
我以为可能有一些设置可以做到这一点,但没有找到.
我需要使用 WPF 绘制一个边框,其中有一个三角形。
这可能吗?
三角形始终位于边框中间的底部。边框宽度大小是动态的。
更新:
我尝试过,但我不知道如何在边框上显示三角形。这是我的例子:
<Grid Background="Black">
        <Border Width="200" Height="80" CornerRadius="20" Background="Red"></Border>
</Grid>
我的结果:
c# ×6
.net ×5
android ×1
concurrency ×1
json.net ×1
linq ×1
net-reactor ×1
obfuscation ×1
plinq ×1
uwp ×1
windows ×1
winforms ×1
wpf ×1
xaml ×1