小编Vit*_*nko的帖子

放弃Github Desktop(Mac)中的所有更改

与最新的提交相比,如何丢弃Github桌面(mac)中的所有更改?

可以单击一个文件并选择"放弃更改".但是如何丢弃文件中的所有更改?

github github-for-mac

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

立即返回任务<bool>

我有一份任务列表,我想等待.我在等

    await TaskEx.WhenAll(MyViewModel.GetListOfTasks().ToArray());
Run Code Online (Sandbox Code Playgroud)

MyViewModel.GetListOfTasks()返回任务列表:

    var tasksList = new List<Task>();
    foreach (var item in Items)
    {                
        tasksList.Add(item.MyTask());
    }
Run Code Online (Sandbox Code Playgroud)

现在,我想返回虚拟任务,这将立即完成.但是,TaskEx.WhenAll会永远等待它:

    public Task<bool> MyTask()
    {
        return new Task<bool>(() => false);
    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能返回任务,这将立即完成?

c# multithreading task-parallel-library windows-phone-7

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

在fileStream.CopyTo(memoryStream)之后,memoryStream为null

所以,我有这个功能,BitmapImage我需要将它保存到iso存储并转换为Base64(用于发送到服务器).然而,从复制fileStreammemoryStream没有成功.

public void SetImage(BitmapImage bitmap)
{
    if (isoFiles.FileExists(Settings.FILE_AVATAR_JPG))
        isoFiles.DeleteFile(Settings.FILE_AVATAR_JPG);

    var fileStream = isoFiles.CreateFile(Settings.FILE_AVATAR_JPG);
    var wb = new WriteableBitmap(bitmap);
    wb.SaveJpeg(fileStream, 120, 120, 0, 85); // file is saved 

    var memoryStream = new MemoryStream();
    fileStream.CopyTo(memoryStream);          // here, memoryStream is null
    byte[] result = memoryStream.ToArray();
    fileStream.Close();

    var base64 = Convert.ToBase64String(result);
}
Run Code Online (Sandbox Code Playgroud)

c# windows-phone-7

15
推荐指数
1
解决办法
1万
查看次数

使用本地模块,使用本地依赖项

我正在尝试包含一个本地库,所以我遵循theese 2教程:如何创建库,如何使用本地库.所以,我有一个很好的示例库(它有package.json,index.ts等),我尝试将它包含在我的主项目中(npm link工作正常,我可以看到我的lib的符号链接),但我不能引用它来自我的主要项目.

import { HelloWorld } from "my-test-lib"; // "Cant find module"
Run Code Online (Sandbox Code Playgroud)

此外,我试图通过安装它npm install ../libs/my-test-lib,但结果是相同的:"无法找到模块".有关如何将其包含在我的项目中的任何建议?

PS:我更喜欢类似的东西npm install,所以我能够将这个变化提交到存储库(与之相反npm link).

编辑(为什么它不重复):在如何将本地模块指定为npm包依赖关系时,不明确哪条路:由于上述原因"bar":"file:../foo/bar",npm link两者都不适用于我.

编辑2:好的,我已经尝试"preinstall": "npm ln my-test-lib ../libs/my-test-lib"过package.json.然后import { HelloWorld } from "my-test-lib";.仍然是相同的错误"无法找到模块".包裹本身可能有问题吗?

EDIT3:是的,这个问题的要点是找出原因

// package.json
"dependencies": {
  "my-test-lib": "file:../lib/my-test-lib"
}

// ts file
import { HelloWorld } from "my-test-lib";
Run Code Online (Sandbox Code Playgroud)

不管用.想知道,我该怎么调试呢.

javascript node.js npm typescript

13
推荐指数
1
解决办法
3145
查看次数

如何确保只调用一部分代码(包含异步)?

所以,我有一个方法,它包含对服务器的异步调用.该代码是从第三方工具调用的,它有时会从不同的线程连续多次调用相同的方法,所以我不能影响它.

我想要确定的是我的方法被调用一次,然后,应该忽略另一个调用.

起初,我试图用bool isBusy来锁定(locker),但是我不满意,因为异步请求仍然从第二个线程被多次调用,这很快就能看到isBusy = true;

然后,我尝试了Monitor

                object obj = new object();
                Monitor.TryEnter(obj);
                try
                {

                    var res = await _dataService.RequestServerAsync(SelectedIndex, e.StartIndex, e.Count);

                    ****
                }
                finally 
                {
                    Monitor.Exit(obj);
                }
Run Code Online (Sandbox Code Playgroud)

然而,在Exit(),我得到例外:

"System.Threading.SynchronizationLockException"类型的第一次机会异常

有没有其他方法可以保证只执行一次代码?

c# multithreading thread-safety windows-phone-7

7
推荐指数
1
解决办法
1375
查看次数

MS CHESS已经过时了?

我有一个类,它使用字符串字典.一种方法是初始化字典,另一种方法是将新对添加到字典中,第三种方法是将字典连接成字符串.

我想通过在不同的线程中同时运行init-adding-adding- * -adding-finalizing方法来对它的线程安全进行单元测试.在使用之前创建了类的新实例,字典不是静态的.所以我想知道,如果它安全的话.

Afaik,在单元测试中测试线程并不是一个好主意.相反,我找到了一个CHESS,其设计目的完全相同:http://blog.decarufel.net/2009/05/how-to-test-your-multi-threaded-code.html

然而,看起来它已经过时了.关于这个领域的任何现代替代/建议?

c# multithreading thread-safety

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

Nuget软件包资源管理器未向引用添加* .dll(不是* .Resources.dll)

这似乎是一个简单的问题,但我没有找到明确的答案。

将带有dll 的软件包安装到示例空wp7项目后,一切似乎都很好(正确提取了相关性),但是dll本身未添加到项目引用中。而且我在Nuget包资源管理器中看不到相应的设置。

我该如何对nuget自动添加引用的库?

c# dll nuget nuget-package

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

Thread.Sleep 会影响 ThreadPool 吗?

我需要为自己的目的控制一个线程:计算、等待、报告等...
在所有其他情况下,我都使用ThreadPool或 TaskEx。

在调试器中,当我执行操作时Thread.Sleep(),我注意到 UI 的某些部分变得越来越不负责任。不过,没有调试器似乎工作得很好。

问题是:如果我创建新线程并Sleep()对其进行操作,它会影响线程池/任务吗?

编辑:这里是代码示例:

我的应用程序中的一个随机位置:

ThreadPool.QueueUserWorkItem((state) =>
{
    LoadImageSource(imageUri, imageSourceRef);
});
Run Code Online (Sandbox Code Playgroud)

我的应用程序中的另一个随机位置:

var parsedResult = await TaskEx.Run(() => JsonConvert.DeserializeObject<PocoProductItem>(resultString, Constants.JsonSerializerSettings));
Run Code Online (Sandbox Code Playgroud)

我的ConcurrentQueue(已修改,原文摘自这里):

为队列需求创建线程:

public void Process(T request, bool Async = true, bool isRecurssive = false)
{
    if (processThread == null || !processThread.IsAlive)
    {
        processThread = new Thread(ProcessQueue);
        processThread.Name = "Process thread @ " + Environment.TickCount;
        processThread.Start();
    }
Run Code Online (Sandbox Code Playgroud)

如果其中一个任务报告一些网络问题,我希望线程稍等一下

if (ProcessRequest(requestToProcess, true))
{
    RequestQueue.Dequeue();
}
else
{
    DoWhenTaskReturnedFalse(); …
Run Code Online (Sandbox Code Playgroud)

c# multithreading threadpool windows-phone-7 windows-phone-8

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

VS代码格式更漂亮(参数前的新行)

我正在使用John Papa撰写的Angular Essentials-特别是Tslint和Prettier。由于某种原因,它会转换此代码

this.rM.hA = this.rM.startHA + 2 * diffX * 360 / size;
this.rM.vA = Math.max(Math.min(this.rM.startVA + 2 * diffY * 180 / size, 90), -90);
Run Code Online (Sandbox Code Playgroud)

进入这个

this.rM.hA =
  this.rM.startHA + 2 * diffX * 360 / size;
this.rM.vA = Math.max(
  Math.min(
    this.rM.startVA + 2 * diffY * 180 / size,
    90
  ),
  -90
);
Run Code Online (Sandbox Code Playgroud)

我该如何避免呢?我尝试使用tslint.json设置:

“最大线长”:[true,165]

但这对我来说并没有影响。

编辑:由于类似的问题,我试图设置"prettier.printWidth""editor.wordWrap",但没有一个帮助。我已经max-line-length按照@ConnorsFan的建议删除了,而我当前的工作区设置(应该覆盖用户设置,对吗?)是

{

prettier.printWidth ”:180,“ editor.wordWrap”:“ bounded”,
“ editor.wordWrapColumn”:180} …

tslint visual-studio-code vscode-settings prettier

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

Async Json.net反序列化

正如这里提到的(很棒的博客,顺便说一下),为了正确处理CPU绑定的调用,需要正确的异步调用.例如,不是

    await Task.Run(() => Thread.Sleep(100));
Run Code Online (Sandbox Code Playgroud)

    await Task.Delay(100);
Run Code Online (Sandbox Code Playgroud)

Json.net是否有类似的反序列化?

    await TaskEx.Run(() => JsonConvert.DeserializeObject<PocoProduct>(resultString));
Run Code Online (Sandbox Code Playgroud)

使用环境:

async public Task<ProductsAnswer> RequestServerAsync()
{
    // Just a wrapper for await httpWebRequest.GetResponseAsync() and await postStreamReader.ReadToEndAsync()
    var resultString = await new NetworkManager().GetAsync(Constants.SERVER_REQUEST); 

    // await TaskEx.Run(() => JsonConvert.DeserializeObject<PocoProduct>(resultString));
    var answer = await ParseProductsFromString(resultString); 

    return answer;
}
Run Code Online (Sandbox Code Playgroud)

c# json asynchronous json.net windows-phone-7

3
推荐指数
1
解决办法
6726
查看次数