小编qak*_*mak的帖子

ConcurrentBag <T>和锁定(List <T>)哪个更快或者删除?

我需要在List上使用一些线程安全操作.

通常我只是简单地使用:

lock(List<T>)
{
   List<T>.Add();
   List<T>.Remove();
}
Run Code Online (Sandbox Code Playgroud)

我也知道还有另一种方法,使用List<T>.但我不知道哪个更快或任何其他不同.

UPDATE1:

有些人建议我使用ConcurrentBag,因为这样更安全.但我担心它会让我的操作更慢.

我只是有很多线程需要在List中添加或删除一些对象,我只是想知道更好的性能方法.这就是我问的原因.

.net c# concurrency

5
推荐指数
2
解决办法
7838
查看次数

如何使用 .Net Reactor 混淆的 Xamarin Android APK dll

我是 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文件。如果是这种情况,我该怎么做?

c# obfuscation android net-reactor xamarin.android

5
推荐指数
1
解决办法
3987
查看次数

如何检测UWP的退出

有没有办法检测当前的UWP 将要退出?(由用户关闭或杀死进程)

我想向服务器发送一些关于应用程序将断开连接的请求,也希望在退出之前保存一些数据.

uwp

2
推荐指数
2
解决办法
1468
查看次数

如何将图像上的字符串转换为字符串?

例如:有一个图像,我在图像中有一篇文章.我如何将该文章转换为字符串?你能告诉我还是给我一个解决方案?

.net c# windows winforms

0
推荐指数
1
解决办法
251
查看次数

为什么我不能在Parallel.For或Parallel.Foreach上使用List.Add()?

这是我的代码:

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);
});
Run Code Online (Sandbox Code Playgroud)

我想做的是,我得到了学生名单.将其转换为学生模型,获取学生姓名(因为一个学生有很多名字),然后我将名字添加到名单,这是因为可能以后我需要得到同名学生并做一些事情......最后添加学生到学生模特名单.

问题发生在:

STUDENT_NAMES.Where(x => x.SearchWords == tempWords).FirstOrDefault().student.Add(studentModel);
Run Code Online (Sandbox Code Playgroud)

这个地方总是发生: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);
Run Code Online (Sandbox Code Playgroud)

但问题仍然发生在某些时候........如果我只是尝试...抓住并忽略它,然后当我以后访问STUDENT_NAMES列表时,它仍然抛出异常....... .....

我也尝试使用ConcurrentBag …

.net c# linq plinq

0
推荐指数
1
解决办法
648
查看次数

当Deserialize Object为null时,如何让Json.net返回一个新的T值?

当我使用Json.net时,我总是会遇到这样的问题:

 List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(personsJson);
Run Code Online (Sandbox Code Playgroud)

你们知道:有些时候因为服务器错误或任何其他问题,返回json字符串只是一个空值.

但当personsJson值时.Json.net将抛出:System.ArgumentNullException

我只需要它自动给我一个新的源对象,我的意思是当personsJson为null时,jut gime me back:new List of Person() ; 这将更有帮助,我不需要在逐一描述之前确定每个json字符串.

我以为可能有一些设置可以做到这一点,但没有找到.

.net c# json.net

0
推荐指数
1
解决办法
426
查看次数

如何在边框的中间画一个三角形

我需要使用 WPF 绘制一个边框,其中有一个三角形。

这可能吗?

在此输入图像描述

三角形始终位于边框中间的底部。边框宽度大小是动态的

更新:

我尝试过,但我不知道如何在边框上显示三角形。这是我的例子:

<Grid Background="Black">
        <Border Width="200" Height="80" CornerRadius="20" Background="Red"></Border>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我的结果:

在此输入图像描述

.net c# wpf xaml

0
推荐指数
1
解决办法
2082
查看次数